JavaScript RegExp 对象

Posted 知其黑、受其白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript RegExp 对象相关的知识,希望对你有一定的参考价值。

阅读目录

RegExp 对象

正则表达式是描述字符模式的对象。

正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。

语法

var patt=new RegExp(pattern,modifiers);

或者更简单的方式:

var patt=/pattern/modifiers;

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

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

比如,以下是等价的:

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

修饰符

修饰符用于执行区分大小写和全局匹配:

修饰符描述
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m执行多行匹配。

javascript RegExp i 修饰符

定义和用法
i 修饰符用于执行对大小写不敏感的匹配。

语法

new RegExp("regexp","i")

或者更简单方式:

/regexp/i

浏览器支持
所有主要浏览器都支持 i 修饰符。

实例
对字符串中的 “WillEm” 进行不分大小写的搜索:

<script>
    var str = "Visit WillEm";
    var patt1 = /WILLEM/i;
    document.write(str.match(patt1)); // WillEm
</script>

JavaScript RegExp g 修饰符

定义和用法
g 修饰符用于执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

语法

new RegExp("regexp","g")

或者更简单方式:

/regexp/g

浏览器支持
所有主要浏览器都支持 g 修饰符

实例 1
“is” 进行全局搜索:

<script>
    var str = "Is this all there is?";
    var patt1 = /is/g;
    document.write(str.match(patt1)); // is,is
</script>

实例 2
“is” 进行全局且大小写不敏感的搜索:

<script>
    var str = "Is this all there is?";
    var patt1 = /is/gi;
    document.write(str.match(patt1)); // Is,is,is
</script>

方括号

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

表达式描述
[abc] 查找方括号之间的任何字符。
[^abc] 查找任何不在方括号之间的字符。
[0-9]查找任何从 0 至 9 的数字。
[a-z]查找任何从小写 a 到小写 z 的字符。
[A-Z]查找任何从大写 A 到大写 Z 的字符。
[A-z]查找任何从大写 A 到小写 z 的字符。
[adgk]查找给定集合内的任何字符。
[^adgk]查找给定集合外的任何字符。
(red|blue|green)查找任何指定的选项。

JavaScript RegExp [abc] 表达式

定义和用法
[abc] 表达式用于查找方括号之间的任何字符。

方括号内的字符可以是任何字符或字符范围。

语法

new RegExp("[abc]")

或者更简单方式:

/[abc]/

实例
在字符串中对字符范围 [a-h] 进行全局搜索:

<script>
    var str = "Is this all there is?";
    var patt1 = /[a-h]/g;
    document.write(str.match(patt1)); // h,a,h,e,e
</script>

JavaScript RegExp [^abc] 表达式

定义和用法
[^abc] 表达式用于查找任何不在方括号之间的字符。

方括号内的字符可以是任何字符或字符范围。

语法

new RegExp("[^xyz]")

或者更简单方式:

/[^xyz]/

实例
对不在字符范围 [^a-h] 内的字符进行全局搜索:

<script>
    var str = "Is this all there is?";
    var patt1 = /[^a-h]/g;
    
    // I,s, ,t,i,s, ,l,l, ,t,r, ,i,s,?
    document.write(str.match(patt1));
</script>

元字符

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

元字符描述
. 查找单个字符,除了换行和行结束符。
\\w 查找数字、字母及下划线。
\\W 查找非单词字符。
\\d 查找数字。
\\D 查找非数字字符。
\\s 查找空白字符。
\\S 查找非空白字符。
\\b 匹配单词边界。
\\B 匹配非单词边界。
\\0查找 NULL 字符。
\\n 查找换行符。
\\f查找换页符。
\\r查找回车符。
\\t查找制表符。
\\v查找垂直制表符。
\\xxx 查找以八进制数 xxx 规定的字符。
\\xdd 查找以十六进制数 dd 规定的字符。
\\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

JavaScript RegExp . 元字符

定义和用法
. 元字符用于查找单个字符,除了换行和行结束符。

语法

new RegExp("regexp.")

或者更简单方式:

/regexp./

实例
对字符串中的 “h.t” 进行全局搜索:

<script>
    var str = "That's hot!";
    var patt1 = /h.t/g;
    document.write(str.match(patt1)); // hat,hot
</script>

JavaScript RegExp \\w 元字符

定义和用法
\\w 元字符用于查找单词字符。

单词字符包括:a-z、A-Z、0-9,以及下划线, 包含 _ (下划线) 字符。

语法

new RegExp("\\w")

或者更简单方式:

/\\w/

实例
对字符串中的单词字符进行全局搜索:

<script>
    var str = "Give 100%!";
    var patt1 = /\\w/g;
    document.write(str.match(patt1)); // G,i,v,e,1,0,0
</script>

JavaScript RegExp \\W 元字符

定义和用法
\\W 元字符用于查找非单词字符。

单词字符包括:a-z、A-Z、0-9,以及下划线。

语法

new RegExp("\\W")

或者更简单方式:

/\\W/

实例
对字符串中的非单词字符进行全局搜索:

<script>
    var str = "Give 100%!";
    var patt1 = /\\W/g;
    document.write(str.match(patt1)); // ,%,!
</script>

JavaScript RegExp \\d 元字符

定义和用法
\\d 元字符用于查找数字字符。

语法

new RegExp("\\\\d")

或者更简单方式:

/\\d/

使用修饰符:

new RegExp("\\\\d", "g")

或者更简单方式:

/\\d/g

实例
对数字进行全局搜索:

 <script>
     var str = "Give 100%!";
     var patt1 = /\\d/g;
     document.write(str.match(patt1)); // 1,0,0
 </script>

JavaScript RegExp \\D 元字符

定义和用法
\\D 元字符用于查找非数字字符。

语法

new RegExp("\\D")

或者更简单方式:

/\\D/

实例
对字符串中的非数字字符进行全局搜索:

<script>
var str="Give 100%!"; 
var patt1=/\\D/g;
document.write(str.match(patt1)); // G,i,v,e, ,%,!
</script>

JavaScript RegExp \\s 元字符

定义和用法
\\s 元字符用于查找空白字符。

空白字符可以是:

空格符 (space character)
制表符 (tab character)
回车符 (carriage return character)
换行符 (new line character)
垂直换行符 (vertical tab character)
换页符 (form feed character)

语法

new RegExp("\\s")

或者更简单方式:

/\\s/

实例
对字符串中的空白字符进行全局搜索:

<script>
var str="Is this all there is?"; 
var patt1=/\\s/g;
document.write(str.match(patt1)); // , , ,
</script>

JavaScript RegExp \\S 元字符

定义和用法
\\S 元字符用于查找非空白字符。

空白字符可以是:

空格符 (space character)
制表符 (tab character)
回车符 (carriage return character)
换行符 (new line character)
垂直换行符 (vertical tab character)
换页符 (form feed character)

语法

new RegExp("\\S")

或者更简单方式:

/\\S/

实例
对字符串中的非空白字符进行全局搜索:

<script>
var str="Is this all there is?"; 
var patt1=/\\S/g;

// I,s,t,h,i,s,a,l,l,t,h,e,r,e,i,s,?
document.write(str.match(patt1));
</script>

JavaScript RegExp \\b 元字符

定义和用法

\\b 元字符匹配单词边界。
\\b 元字符通常用于查找位于单词的开头或结尾的匹配。

语法

new RegExp("\\bregexp")

或者更简单方式:

/\\bregexp/

实例
对字符串中的单词的开头或结尾进行 “My” 的全局搜索:

<script>
var str="Visit Mybj"; 
var patt1=/\\bMy/g;
document.write(str.match(patt1)); // My
</script>

JavaScript RegExp \\B 元字符

定义和用法

\\B 元字符匹配非单词边界。
匹配位置的上一个和下一个字符的类型是相同的:
即必须同时是单词,或必须同时是非单词字符。字符串的开头和结尾处被视为非单词字符。

如果未找到匹配,则返回 null

语法

new RegExp(" \\Bregexp")

或者更简单方式:

/\\Bregexp/

实例
对字符串中不位于单词开头或结尾的 “ybj” 进行全局搜索:

<script>
var str="Visit Mybj"; 
var patt1=/\\Bybj/g;
document.write(str.match(patt1)); // ybj
</script>

JavaScript RegExp \\n 元字符

定义和用法

\\n 元字符用于查找换行符。
\\n 返回换行符被找到的位置。如果未找到匹配,则返回 -1

语法

new RegExp("\\n")

或者更简单方式:

/\\n/

实例
搜索字符串中的换行字符:

<script>
var str="Visit MYBJ.\\n Learn JavaScript."; 
var patt1=/\\n/g;
document.write(str.search(patt1)); // 11
</script>

JavaScript RegExp \\xxx 元字符

定义和用法

\\xxx 元字符用于查找以八进制数 xxx 规定的字符。
如果未找到匹配,则返回 null

语法

new RegExp("\\xxx")

或者更简单方式:

/\\xxx/

实例
对字符串中的八进制 127 (W) 进行全局搜索:

<script>
var str="Visit Mybj. Hello World!"; 
var patt1=/\\127/g;
document.write(str.match(patt1)); // W
</script>

JavaScript RegExp \\xdd 元字符

定义和用法

\\xdd 元字符查找以十六进制数 dd 规定的字符。
如果未找到匹配,则返回 null

语法

new RegExp("\\xdd")

或者更简单方式:

/\\xdd/

实例
对字符串中的十六进制 57 (W) 进行全局搜索:

<script>
var str="Visit Mybj. Hello World!"; 
var patt1=/\\x57/g;
document.write(str.match(patt1));  // W
</script>

JavaScript RegExp \\uxxxx 元字符

定义和用法

\\uxxxx 元字符用于查找以十六进制数 xxxx 规定的 Unicode 字符。

如果未找到匹配,则返回 null

实例
对字符串中的十六进制 0057 (W) 进行全局搜索:

<script>
var str="Visit W3Schools. Hello World!"; 
var patt1=/\\u0057/g;
document.write(str.match(patt1)); // W,W
</script>

量词

量词描述
n+ 匹配任何包含至少一个 n 的字符串。

 

例如,/a+/ 匹配 “candy” 中的 “a”,”caaaaaaandy” 中所有的 “a”。

n* 匹配任何包含零个或多个 n 的字符串。

例如,/bo*/ 匹配 “A ghost booooed” 中的 “boooo”,”A bird warbled” 中的 “b”,但是不匹配 “A goat grunted”。

n? 匹配任何包含零个或一个 n 的字符串。

例如,/e?le?/ 匹配 “angel” 中的 “el”,”angle” 中的 “le”。

nX 匹配包含 X 个 n 的序列的字符串。

例如,/a2/ 不匹配 “candy,” 中的 “a”,但是匹配 “caandy,” 中的两个 “a”,且匹配 “caaandy.” 中的前两个 “a”。

nX, X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。

例如,/a2,/ 不匹配 “candy” 中的 “a”,但是匹配 “caandy” 和 “caaaaaaandy.” 中所有的 “a”。

nX,Y X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。

例如,/a1,3/ 不匹配 “cndy”,匹配 “candy,” 中的 “a”,”caandy,” 中的两个 “a”,匹配 “caaaaaaandy” 中的前面三个 “a”。注意,当匹配 “caaaaaaandy” 时,即使原始字符串拥有更多的 “a”,匹配项也是 “aaa”。

n$ 匹配任何结尾为 n 的字符串。
^n 匹配任何开头为 n 的字符串。
?=n 匹配任何其后紧接指定字符串 n 的字符串。
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

JavaScript RegExp + 量词

定义和用法
n+ 量词匹配包含至少一个 n 的任何字符串。

语法

new RegExp("n+")

或者更简单方式:

/n+/

实例 1
对至少一个 “o” 进行全局搜索:

<script>
var str="Hellooo World! Hello willem!"; 
var patt1=/o+/g;
document.write(str.match(patt1));  // ooo,o,o
</script>

JavaScript RegExp * 量词

定义和用法
n* 量词匹配包含零个或多个 n 的任何字符串。

语法

new RegExp("n*")

或者更简单方式:

/n*/

实例 1
“l” 进行全局搜索,包括其后紧跟的一个或多个 “o”:

<script>
var str="Hellooo World! Hello W3Schools!"; 
var patt1=/lo*/g;
document.write(str.match(patt1));  // l,looo,l,l,lo,l
</script>

实例 2
“1” 进行全局搜索,包括其后紧跟的一个或多个 “0”:

<script>
var str="1, 100 or 1000?"; 
var patt1= /10*/g;
document.write(str.match(patt1)); // 1,100,1000
</script>

JavaScript RegExp ? 量词

定义和用法
n? 量词匹配任何包含零个或一个 n 的字符串。

语法

new RegExp("n?")

或者更简单方式:

/n?/

实例
“1” 进行全局搜索,包括其后紧跟的零个或一个 “0”:

<script>
var str="1, 100 or 1000?"; 
var patt1=/10?/g;
document.write(str.match(patt1));  // 1,10,10
</script>

JavaScript RegExp X 量词

定义和用法
nX 量词匹配包含 X 个 n 的序列的字符串。

X 必须是数字。

语法

new RegExp("nX")

或者更简单方式:

/nX/

实例
对包含四位数字序列的子串进行全局搜索:

<script>
var str="100, 1000 or 10000?";
var patt1=/\\d4/g; 
document.write(str.match(patt1));  // 1000,1000
</script>

JavaScript RegExp X, 量词

定义和用法
nX, 量词匹配包含至少 X 个 n 的序列的字符串。

X 必须是数字。

语法

new RegExp("nX,")

或者更简单方式:

/nX,/

实例
对包含至少三位数字序列的子串进行全局搜索:

<script>
var str="100, 1000 or 10000?";
var patt1=/\\d3,/g; 
document.write(str.match(patt1)); // 100,1000,10000
</script>

JavaScript RegExp X,Y 量词

定义和用法
nX,Y 量词匹配包含至少 X 最多Y 个 n 的序列的字符串,X 和 Y 必须是数字。

语法

new RegExp("nX,Y")

或者更简单方式:

/nX,Y/

实例
对包含三位或四位数字序列的子串进行全局搜索:

<script>
var str="100, 1000 or 10000?";
var patt1=/\\d3,4/g; 
document.write(str.match(patt1)); // 100,1000,1000
</script>

JavaScript RegExp $ 量词

定义和用法
n$ 量词匹配任何结尾为 n 的字符串。

语法

new RegExp("n$")

或者

/n$/

实例
对字符串结尾的 “is” 进行全局搜索::

<script>
var str="Is this his";
var patt1=/is$/g;
document.write(str.match(patt1));  // is
</script>

JavaScript RegExp ^ 量词

定义和用法
^n 量词匹配任何开头为 n 的字符串。

语法

new RegExp("^n")

或者

/^n/

实例
对字符串开头的 “Is” 进行全局搜索:

<script>
var str="Is this his";
var patt1=/^Is/g;
document.write(str.match(patt1));  // Is
</script>

JavaScript RegExp ?= 量词

定义和用法
?=n 量词匹配任何其后紧接指定字符串 n 的字符串。

语法

new RegExp("regexp(?=n)"学习正则表达式

JavaScript中RegExp对象

JavaScript RegExp 对象

JavaScript RegExp 对象

JavaScript RegExp 对象

JavaScript RegExp 对象