博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript RegExp 对象
阅读量:7005 次
发布时间:2019-06-27

本文共 7332 字,大约阅读时间需要 24 分钟。

语法

 

var patt=new RegExp(pattern,modifiers);或者更简单的方式:var patt=/pattern/modifiers;

 

  • pattern(模式) 描述了表达式的模式
  • modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配

 

注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:

var re = new RegExp("\\w+");var re = /\w+/;

RegExp 修饰符

修饰符用于执行不区分大小写和全文的搜索。

i - 修饰符是用来执行不区分大小写的匹配。(所有主要浏览器都支持i修饰符)

g - 修饰符是用于执行全文的搜索(而不是在找到第一个就停止查找,而是找到所有的匹配)。

m - 执行多行匹配

new RegExp("regexp","g") 或者更简单方式: /regexp/g
对 "is" 进行全局且大小写不敏感的搜索: var str="Is this all there is?";var patt1=/is/gi;document.write(str.match(patt1));结果 Is , is , is

test()

test()方法搜索字符串指定的值,根据结果并返回真或假。

语法:RegExpObject.test(string)

下面的示例是从字符串中搜索字符 "e" :

var patt1=new RegExp("e");document.write(patt1.test("The best things in life are free"));结果: true
var str="Hello world!";//查找"Hello"var patt=/Hello/g;var result=patt.test(str);document.write("返回值: " +  result); //查找 "W3Cschool"patt=/W3Cschool/g;result=patt.test(str);document.write("
返回值: " + result);结果:返回值: true返回值: false

当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)

var str = 'runoob';var patt1 = new RegExp('\\w', 'g'); // 有转义作为正则表达式处理var patt2 = new RegExp('\w', 'g');  // 无转义作为字符串处理var patt3 =/\w+/g;  // 与 patt1 效果相同document.write(patt1.test(str)) //输出 truedocument.write("
") document.write(patt2.test(str)) //输出 falsedocument.write("
") document.write(patt3.test(str)) //输出 true

exec()

exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。

语法:RegExpObject.exec(string)

下面的示例是从字符串中搜索字符 "e" :

var patt1=new RegExp("e");document.write(patt1.exec("The best things in life are free")); 结果: e
var str="Hello world!";//查找"Hello"var patt=/Hello/g;var result=patt.exec(str);document.write("返回值: " +  result); //查找 "W3Cschool"patt=/W3Cschool/g;result=patt.exec(str);document.write("
返回值: " + result);结果:返回值: Hello返回值: null

方括号

方括号用于查找某个范围内的字符:

[abc]语法:

new RegExp("[abc]")或者更简单方式:/[abc]/所有主要浏览器都支持 [abc] 表达式var str="Is this all there is?";var patt1=/[a-h]/g;document.write(str.match(patt1));结果: h,a,h,e,e

[^abc]语法:

new RegExp("[^xyz]")或者更简单方式:/[^xyz]/所有主要浏览器都支持 [^abc] 表达式var str="Is this all there is?";var patt1=/[^a-h]/g;document.write(str.match(patt1));结果: I,s, ,t,i,s, ,l,l, ,t,r, ,i,s,?

元字符

元字符(Metacharacter)是拥有特殊含义的字符:

.语法:

new RegExp("regexp.")或者更简单方式:/regexp./var str="That's hot!";var patt1=/h.t/g;document.write(str.match(patt1));结果: hat,hot

\w语法:

\w 元字符用于查找单词字符。单词字符包括:a-z、A-Z、0-9,以及下划线, 包含 _ (下划线) 字符。new RegExp("\w")或者更简单方式:/\w/所有主要浏览器都支持 \w 元字符var str="Give 100%!"; var patt1=/\w/g;document.write(str.match(patt1));结果: G,i,v,e,1,0,0

\W语法:

\W 元字符用于查找非单词字符。单词字符包括:a-z、A-Z、0-9,以及下划线。new RegExp("\W")或者更简单方式:/\W/所有主要浏览器都支持 \W 元字符var str="Give 100%!"; var patt1=/\W/g;document.write(str.match(patt1));结果: ,%,!

\d语法:

\d 元字符用于查找数字字符。new RegExp("\d")或者更简单方式:/\d/所有主要浏览器都支持 \d 元字符var str="Give 100%!"; var patt1=/\d/g;document.write(str.match(patt1));结果: 1,0,0

\D语法:

\D 元字符用于查找非数字字符。new RegExp("\D")或者更简单方式:/\D/所有主要浏览器都支持 \D 元字符var str="Give 100%!"; var patt1=/\D/g;document.write(str.match(patt1));结果: G,i,v,e, ,%,!

\s语法:

\s 元字符用于查找空白字符。空白字符可以是:空格符 (space character)制表符 (tab character)回车符 (carriage return character)换行符 (new line character)垂直换行符 (vertical tab character)换页符 (form feed character)new RegExp("\s")或者更简单方式:/\s/所有主要浏览器都支持 \s 元字符var str="Is this all there is?"; var patt1=/\s/g;document.write(str.match(patt1));结果: , , ,

\S语法:

\S 元字符用于查找非空白字符。空白字符可以是:空格符 (space character)制表符 (tab character)回车符 (carriage return character)换行符 (new line character)垂直换行符 (vertical tab character)换页符 (form feed character)new RegExp("\S")或者更简单方式:/\S/所有主要浏览器都支持 \S 元字符var str="Is this all there is?"; var patt1=/\S/g;document.write(str.match(patt1));结果: I,s,t,h,i,s,a,l,l,t,h,e,r,e,i,s,?

\b语法:

\b 元字符匹配单词边界。\b 元字符通常用于查找位于单词的开头或结尾的匹配。new RegExp("\bregexp")或者更简单方式:/\bregexp/所有主要浏览器都支持 \b 元字符var str="Visit W3CSchool"; var patt1=/\bW3/g;document.write(str.match(patt1));结果: W3

\B语法:

\B 元字符匹配非单词边界。匹配位置的上一个和下一个字符的类型是相同的:即必须同时是单词,或必须同时是非单词字符。字符串的开头和结尾处被视为非单词字符。如果未找到匹配,则返回 null。new RegExp(" \Bregexp")或者更简单方式:/\Bregexp/var str="Visit W3Cschool"; var patt1=/\Bschool/g;document.write(str.match(patt1));结果: school

\n语法:

\n 元字符用于查找换行符。\n 返回换行符被找到的位置。如果未找到匹配,则返回 -1。new RegExp("\n")或者更简单方式:/\n/var str="Visit W3Cschool.\n Learn JavaScript."; var patt1=/\n/g;document.write(str.search(patt1));结果: 16

\xxx语法:

\xxx 元字符用于查找以八进制数 xxx 规定的字符。如果未找到匹配,则返回 null。new RegExp("\xxx")或者更简单方式:/\xxx/var str="Visit W3Cschool. Hello World!"; var patt1=/\127/g;document.write(str.match(patt1));结果:  W,W

\xdd语法:

\xdd 元字符查找以十六进制数 dd 规定的字符。如果未找到匹配,则返回 null。new RegExp("\xdd")或者更简单方式:/\xdd/var str="Visit W3Cschool. Hello World!"; var patt1=/\x57/g;document.write(str.match(patt1));结果: W,W

\uxxxx语法:

\uxxxx 元字符用于查找以十六进制数 xxxx 规定的 Unicode 字符。如果未找到匹配,则返回 null。new RegExp("\uxxxx")或者更简单方式:/\uxxxx/var str="Visit W3Schools. Hello World!"; var patt1=/\u0057/g;document.write(str.match(patt1));结果: W,W

量词

RegExp 对象方法

compile()语法:

compile() 方法用于在脚本执行过程中编译正则表达式。

compile() 方法也可用于改变和重新编译正则表达式。

除了 Opera 浏览器外,其他浏览器都支持 compile() 方法。

var str="Every man in the world! Every woman on earth!";var patt=/man/g;var str2=str.replace(patt,"person");document.write(str2+"
");patt=/(wo)?man/g;patt.compile(patt); str2=str.replace(patt,"person");document.write(str2);结果: Every person in the world! Every woperson on earth!Every person in the world! Every person on earth!

支持正则表达式的 String 对象的方法

search 语法:

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

如果没有找到任何匹配的子串,则返回 -1。

string.search(searchvalue)

实例:执行一次对大小写敏感的查找:

function myFunction(){    var str="Mr. Blue has a blue house"    var n=str.search("blue");    document.getElementById("demo").innerHTML=n;}结果: 15

执行一次忽略大小写的检索:

function myFunction(){    var str="Mr. Blue has a blue house"    var n=str.search(/blue/i);    document.getElementById("demo").innerHTML=n;}结果: 4

match 语法:

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

注意: match() 方法将检索字符串 String Object,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。

string.match(regexp)

全局查找字符串 "ain",且不区分大小写:

function myFunction(){    var str = "The rain in SPAIN stays mainly in the plain";     var n=str.match(/ain/gi);    document.getElementById("demo").innerHTML=n;}结果: ain,AIN,ain,ain

replace()语法:

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串

该方法不会改变原始字符串。

string.replace(searchvalue,newvalue)

执行一个全局替换:

单击按钮将段落中的“blue”替换成“red”。

Mr Blue has a blue house and a blue car.

function myFunction(){ var str=document.getElementById("demo").innerHTML; var n=str.replace(/blue/g,"red"); document.getElementById("demo").innerHTML=n;}结果: 单击按钮将段落中的“blue”替换成“red”。Mr Blue has a red house and a red car.

执行一个全局替换, 忽略大小写:

单击按钮将段落中的“blue”替换成“red”。

Mr Blue has a blue house and a blue car.

function myFunction(){ var str=document.getElementById("demo").innerHTML; var n=str.replace(/blue/gi,"red"); document.getElementById("demo").innerHTML=n;}结果:单击按钮将段落中的“blue”替换成“red”。Mr red has a red house and a red car.

split()语法:

split() 方法用于把一个字符串分割成字符串数组。

提示: 如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。

注意: split() 方法不改变原始字符串。

string.split(separator,limit)

省略分割参数:

单击按钮显示分割后的数组

结果: How are you doing today?

分割每个字符,包括空格:

单击按钮显示分割后的数组

结果: H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?

使用 limit 参数:

单击按钮显示分割后的数组

结果: How,are,you

使用一个字符作为分隔符:

单击按钮显示分割后的数组

结果: H,w are y,u d,ing t,day?

 

转载于:https://www.cnblogs.com/JinQing/p/6705097.html

你可能感兴趣的文章