JavaScript RegExp 对象
Posted 知其黑、受其白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript RegExp 对象相关的知识,希望对你有一定的参考价值。
阅读目录
- RegExp 对象
- 修饰符
- 方括号
- 元字符
- JavaScript RegExp . 元字符
- JavaScript RegExp \\w 元字符
- JavaScript RegExp \\W 元字符
- JavaScript RegExp \\d 元字符
- JavaScript RegExp \\D 元字符
- JavaScript RegExp \\s 元字符
- JavaScript RegExp \\S 元字符
- JavaScript RegExp \\b 元字符
- JavaScript RegExp \\B 元字符
- JavaScript RegExp \\n 元字符
- JavaScript RegExp \\xxx 元字符
- JavaScript RegExp \\xdd 元字符
- JavaScript RegExp \\uxxxx 元字符
- 量词
- RegExp 对象方法
- 支持正则表达式的 String 对象的方法
- 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)"学习正则表达式