沈阳专业做网站公司,柳北网站制作,信阳网站建设哪家好,商务网站建设模块Javascript之RegExp 对象 RegExp 对象
RegExp 对象表示正则表达式#xff0c;它是对字符串执行模式匹配的强大工具。
直接量语法 /pattern/attributes 创建 RegExp 对象的语法#xff1a; new RegExp(pattern, attributes); 参数
参数 pattern 是一个字符串#xff0c;指…Javascript之RegExp 对象 RegExp 对象
RegExp 对象表示正则表达式它是对字符串执行模式匹配的强大工具。
直接量语法 /pattern/attributes 创建 RegExp 对象的语法 new RegExp(pattern, attributes); 参数
参数 pattern 是一个字符串指定了正则表达式的模式或其他正则表达式。
参数 attributes 是一个可选的字符串包含属性 g、i和m分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前不支持 m 属性。如果pattern 是正则表达式而不是字符串则必须省略该参数。
返回值
一个新的 RegExp 对象具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串那么 RegExp() 构造函数将用与指定的RegExp 相同的模式和标志创建一个新的 RegExp 对象。
如果不用 new 运算符而将 RegExp() 作为函数调用那么它的行为与用 new 运算符调用时一样只是当 pattern 是正则表达式时它只返回pattern而不再创建一个新的RegExp 对象。
抛出
SyntaxError - 如果 pattern 不是合法的正则表达式或 attributes 含有 g、i 和m 之外的字符抛出该异常。
TypeError - 如果 pattern 是 RegExp 对象但没有省略 attributes 参数抛出该异常。
修饰符 修饰符 描述 i 执行对大小写不敏感的匹配。 g 执行全局匹配查找所有匹配而非在找到第一个匹配后停止。 m 执行多行匹配。
方括号
方括号用于查找某个范围内的字符 表达式 描述 [abc] 查找方括号之间的任何字符。 [^abc] 查找任何不在方括号之间的字符。 [0-9] 查找任何从 0 至 9 的数字。 [a-z] 查找任何从小写 a 到小写 z 的字符。 [A-Z] 查找任何从大写 A 到大写 Z 的字符。 [A-z] 查找任何从大写 A 到小写 z 的字符。 [adgk] 查找给定集合内的任何字符。 [^adgk] 查找给定集合外的任何字符。 (red|blue|green) 查找任何指定的选项。
元字符
元字符Metacharacter是拥有特殊含义的字符 元字符 描述 . 查找单个字符除了换行和行结束符。 \w 查找单词字符。 \W 查找非单词字符。 \d 查找数字。 \D 查找非数字字符。 \s 查找空白字符。 \S 查找非空白字符。 \b 查找位于单词的开头或结尾的匹配。 \B 查找不处在单词的开头或结尾的匹配。 \0 查找 NUL 字符。 \n 查找换行符。 \f 查找换页符。 \r 查找回车符。 \t 查找制表符。 \v 查找垂直制表符。 \xxx 查找以八进制数 xxx 规定的字符。 \xdd 查找以十六进制数 dd 规定的字符。 \uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。
量词 量词 描述 n 匹配任何包含至少一个 n 的字符串。 n* 匹配任何包含零个或多个 n 的字符串。 n? 匹配任何包含零个或一个 n 的字符串。 n{X} 匹配包含 X 个 n 的序列的字符串。 n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串。 n{X,} 匹配包含至少 X 个 n 的序列的字符串。 n$ 匹配任何结尾为 n 的字符串。 ^n 匹配任何开头为 n 的字符串。 ?n 匹配任何其后紧接指定字符串 n 的字符串。 ?!n 匹配任何其后没有紧接指定字符串 n 的字符串。
RegExp 对象属性
FF: Firefox, IE: Internet Explorer 属性 描述 FF IE global RegExp 对象是否具有标志 g。 1 4 ignoreCase RegExp 对象是否具有标志 i。 1 4 lastIndex 一个整数标示开始下一次匹配的字符位置。 1 4 multiline RegExp 对象是否具有标志 m。 1 4 source 正则表达式的源文本。 1 4
RegExp 对象方法
FF: Firefox, IE: Internet Explorer 方法 描述 FF IE compile 编译正则表达式。 1 4 exec 检索字符串中指定的值。返回找到的值并确定其位置。 1 4 test 检索字符串中指定的值。返回 true 或 false。 1 4
支持正则表达式的 String 对象的方法
FF: Firefox, IE: Internet Explorer 方法 描述 FF IE search 检索与正则表达式相匹配的值。 1 4 match 找到一个或多个正则表达式的匹配。 1 4 replace 替换与正则表达式匹配的子串。 1 4 split 把字符串分割为字符串数组。 1 4 1. RegExp 对象3 个方法test()、exec() 以及 compile()。
1.1 test()我只用过这个呵呵~~
test() 方法检索字符串中的指定值。返回值是 true 或false。
例
scripttypetext/javascript
var patt1newRegExp(e);
document.write(patt1.test(Thebest things in life are free));
/script
输出true
1.2exec()
exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配则返回null。
例
scripttypetext/javascript
var patt1newRegExp(e);
document.write(patt1.exec(Thebest things in life are free));
/script
输出e 1.3 compile()
compile() 方法用于改变 RegExp。
compile() 既可以改变检索模式也可以添加或删除第二个参数。
例
scripttypetext/javascript
var patt1newRegExp(e);
document.write(patt1.test(Thebest things in life are free));
patt1.compile(d);
document.write(patt1.test(Thebest things in life are free));
/script 输出truefalse
2. 修饰符i的定义和用法用于执行对大小写不敏感的匹配。 语法 new RegExp(regexp,i)
直接量语法 /regexp/i
浏览器支持所有主流浏览器都支持 i 修饰符。
例
scripttypetext/javascript
var str VisitW3School;
var patt1 /w3school/i;
document.write(str.match(patt1));//注意这里的match方法是
/script 输出W3School
3. 修饰符g定义和用法用于执行全局匹配查找所有匹配而非在找到第一个匹配后停止。
语法
newRegExp(regexp,g)
直接量语法 /regexp/g
浏览器支持所有主流浏览器都支持 g 修饰符。
例1对 is 进行全局搜索,输出is,is
scripttypetext/javascript
var strIs this all thereis?;
var patt1/is/g;
document.write(str.match(patt1));
/script
例2对 is 进行全局且大小写不敏感的搜索
scripttypetext/javascript
var strIs this all thereis?;
var patt1/is/gi;
document.write(str.match(patt1));
/script
4. [abc] 表达式定义和用法用于查找方括号之间的任何字符。
方括号内的字符可以是任何字符或字符范围。
语法
new RegExp([abc])
直接量语法 /[abc]/
浏览器支持所有主流浏览器都支持 [abc] 表达式。
例在字符串中对字符范围 [a-h] 进行全局搜索下面例子输出h,a,h,e,e
scripttypetext/javascript
var strIs this all thereis?;
var patt1/[a-h]/g;
document.write(str.match(patt1));
/script 5. [abc] 表达式定义和用法用于查找任何不在方括号之间的字符。
方括号内的字符可以是任何字符或字符范围。
语法 new RegExp([^xyz])
直接量语法 /[^xyz]/
浏览器支持所有主流浏览器都支持 [^abc] 表达式。
例对不在字符范围 [a-h] 内的字符进行全局搜索输出结果
I,s, ,t,i,s, ,l,l,,t,r, ,i,s,?
scripttypetext/javascript
var strIs this all thereis?;
var patt1/[^a-h]/g;
document.write(str.match(patt1));
/script
6. . 元字符定义和用法用于查找单个字符除了换行和行结束符。
语法
new RegExp(regexp.)
直接量语法 /regexp./
浏览器支持所有主流浏览器都支持 . 元字符。
例hat,hot
scripttypetext/javascript
var strThats hot!;
var patt1/h.t/g;
document.write(str.match(patt1));
/script
7. \w 元字符定义和用法用于查找单词字符。
语法 new RegExp(\w)
直接量语法 /\w/
浏览器支持
所有主流浏览器都支持 \w 元字符。
例对字符串中的单词字符进行全局搜索输出G,i,v,e,1,0,0
scripttypetext/javascript
var strGive 100%!;
var patt1/\w/g;
document.write(str.match(patt1));
/scriptscripttypetext/javascript
var strGive 100%!;
var patt1/\w/g;
document.write(str.match(patt1));
/script
8. \b 元字符定义和用法用于查找位于单词的开头或结尾的匹配。
如果未找到匹配则返回 null。
语法 new RegExp(\bregexp)
直接量语法 /\bregexp/
浏览器支持
所有主流浏览器都支持 \b 元字符。
例: 对字符串中的单词的开头或结尾进行 W3 的全局搜索,输出W3
scripttypetext/javascript
var strVisitW3School;
var patt1/\bW3/g;
document.write(str.match(patt1));
/script
9. n 量词定义和用法匹配包含至少一个 n 的任何字符串。
语法 new RegExp(n)
直接量语法 /n/
浏览器支持
所有主流浏览器都支持 量词。
例1对至少一个 o 进行全局搜索输出ooo,o,o,oo
scripttypetext/javascript
var strHellooo World!Hello W3School!;
var patt1/o/g;
document.write(str.match(patt1));
/script
例2对至少一个单词字符进行全局搜索输出Hellooo,World,Hello,W3School
script typetext/javascript
var strHellooo World!Hello W3School!;
var patt1/\w/g;
document.write(str.match(patt1));
/script
10. n{X,} 量词定义和用法匹配包含 X 个 n 的序列的字符串。
X 必须是数字。
语法
new RegExp(n{X})
直接量语法 /n{X}/
浏览器支持
所有主流浏览器都支持 {X} 量词。
例 对包含四位数字序列的子串进行全局搜索输出1000,1000
scripttypetext/javascript
var str100, 1000 or10000?;
var patt1/\d{4}/g;
document.write(str.match(patt1));
/script
11.n$ 量词定义和用法:匹配任何结尾为 n 的字符串。
语法
newRegExp(n$)
直接量语法 /n$/
浏览器支持
所有主流浏览器都支持 $ 量词。
例对字符串结尾的is 进行全局搜索输出is
scripttypetext/javascript
var strIs this his;
var patt1/is$/g;
document.write(str.match(patt1));
/script
12. n^ 量词定义和用法:匹配任何开头为 n 的字符串。
语法
new RegExp(^n)
直接量语法
/^n/
浏览器支持
所有主流浏览器都支持 ^ 量词。
例对字符串开头的 is 进行全局搜索输出Is
script typetext/javascript
var strIs this his;
var patt1/^Is/g;
document.write(str.match(patt1));
/script
13. ?n 量词定义和用法匹配任何其后紧接指定字符串 n 的字符串。
语法
newRegExp(regexp(?n))
直接量语法 /regexp(?n)/
浏览器支持:所有主流浏览器都支持 ? 量词。
例对其后紧跟 all 的is 进行全局搜索
script typetext/javascript
var strIs this all thereis;
var patt1/is(? all)/;
document.write(str.match(patt1));
/script
14. compile() 方法定义和用法用于在脚本执行过程中编译正则表达式。 compile()方法也可用于改变和重新编译正则表达式。
语法
RegExpObject.compile(regexp,modifier)
参数 描述
Regexp正则表达式。
Modifier规定匹配的类型。g 用于全局匹配i用于区分大小写gi 用于全局区分大小写的匹配。
例在字符串中全局搜索man并用 person 替换。然后通过 compile() 方法改变正则表达式用person 替换 man 或 woman
scripttypetext/javascript
var strEvery man in theworld! Every woman on earth!;
patt/man/g;
str2str.replace(patt,person);
document.write(str2br/);
patt/(wo)?man/g;
patt.compile(patt);
str2str.replace(patt,person);
document.write(str2);
/script
输出
Every person in the world! Everywoperson on earth!
Every person in the world! Every personon earth!
15. search() 方法定义和用法用于检索字符串中指定的子字符串或检索与正则表达式相匹配的子字符串。
语法
stringObject.search(regexp)
参数 描述
Regexp该参数可以是需要在 stringObject 中检索的子串也可以是需要检索的 RegExp 对象。
注释要执行忽略大小写的检索请追加标志 i。
返回值stringObject 中第一个与 regexp 相匹配的子串的起始位置。
注释如果没有找到任何匹配的子串则返回 -1。
说明search() 方法不执行全局匹配它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性并且总是从字符串的开始进行检索这意味着它总是返回stringObject 的第一个匹配的位置。
例1在本例中我们将检索W3School
scripttypetext/javascript
var strVisitW3School!
document.write(str.search(/W3School/))
/script
输出6
在下面的例子中无法检索到w3school因为 search() 对大小写敏感。
scripttypetext/javascript
var strVisitW3School!
document.write(str.search(/w3school/))
/script
输出-1
例2在本例中我们将执行一次忽略大小写的检索
scripttypetext/javascript
var strVisitW3School!
document.write(str.search(/w3school/i))
/script
输出6
16. match() 方法定义和用法可在字符串内检索指定的值或找到一个或多个正则表达式的匹配。
该方法类似 indexOf() 和 lastIndexOf()但是它返回指定的值而不是字符串的位置。
语法
stringObject.match(searchvalue)
stringObject.match(regexp)
参数 描述
searchvalue必需。规定要检索的字符串值。
regexp必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象则需要首先把它传递给 RegExp 构造函数将其转换为RegExp 对象。
返回值存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志g。
说明match() 方法将检索字符串 stringObject以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于regexp 是否具有标志 g。 如果 regexp 没有标志 g那么 match() 方法就只能在stringObject 中执行一次匹配。如果没有找到任何匹配的文本 match() 将返回 null。否则它将返回一个数组其中存放了与它找到的匹配文本有关的信息。该数组的第0 个元素存放的是匹配文本而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在stringObject 中的位置input 属性声明的是对 stringObject 的引用。 如果 regexp 具有标志 g则 match() 方法将执行全局检索找到stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串则返回 null。如果找到了一个或多个匹配子串则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同它的数组元素中存放的是stringObject 中所有的匹配子串而且也没有 index 属性或 input 属性。 注意在全局检索模式下match() 即不提供与子表达式匹配的文本的信息也不声明每个匹配子串的位置。如果您需要这些全局检索的信息可以使用RegExp.exec()。
例2使用全局匹配的正则表达式来检索字符串中的所有数字
scripttypetext/javascript
var str1 plus 2 equal3
document.write(str.match(/\d/g))
/script
输出1,2,3