代码 | 描述 |
---|---|
. |
匹配除换行符之外的任意字符 |
[...] |
匹配方括号中的任意单个字符 |
[^...] |
匹配不在方括号中的任意单个字符 |
\w |
匹配数字、字母和下划线,[a-zA-Z0-9_] |
\W |
匹配任意单个非字母、数字或下划线的字符 |
\s |
匹配任意单个空白字符(空格、制表符、换行符、回车符等) |
\S |
匹配任意单个非空白字符 |
\d |
匹配任意单个数字 |
\D |
匹配任意单个非数字字符 |
\b |
匹配任意单个单词边界 |
\B |
匹配任意单个非单词边界的位置 |
^ |
匹配字符串的开始 |
$ |
匹配字符串的结束 |
代码 | 描述 |
---|---|
* |
匹配前面的字符 0 次或多次 |
+ |
匹配前面的字符 1 次或多次 |
? |
匹配前面的字符 0 次或 1 次 |
{n} |
匹配前面的字符恰好 n 次 |
{n, } |
匹配前面的字符至少 n 次 |
{n, m} |
匹配前面的字符至少 n 次,至多 m 次 |
x|y |
左右两边的模式只要有一个匹配就可以 |
() |
将模式分组,并记住匹配的文本 |
\1 |
匹配第 1 个分组所记住的文本 |
\2 |
匹配第 2 个分组所记住的文本 |
\n |
匹配第 n 个分组所记住的文本 |
代码 | 描述 |
---|---|
(exp) |
匹配exp,每个分组将产生分组号。可用\x 的形式使用分组号,其中x 表示数字。例如:/<(\w+)><\/\1>/ 可以匹配成对出现的HTML标签; |
(?:exp) |
匹配exp,但不产生分组号 |
(?=exp) |
负向零宽断言, 表示在它后面必须匹配 exp |
(?<=exp) |
负向零宽断言, 表示在它前面必须匹配 exp |
(?!exp) |
负向零宽断言,表示在它后面不能匹配 exp |
(? |
负向零宽断言, 表示在它前面不能匹配 exp |
举例说明:
(?=exp)
/^\d+(?=%)/
来匹配所有以百分号结尾的数字,例如:123%:匹配到 123。
45%:匹配到 45。
下列字符串都不能被匹配:
123:不以百分号结尾。
45%6:百分号后面还有其他字符。
(?<=exp)
我们可以使用正则表达式 /(?<=).*(?=<\/em>)/
来匹配所有被 和 包含的字符串,例如:
<em>hello</em>:匹配到 hello。
<em>world</em>:匹配到 world。
下列字符串都不能被匹配:
<em>hello</em>world:</em> 后面还有其他字符。
hello<em></em>:<em> 前面没有其他字符
(?!exp)
我们可以使用正则表达式 /^(?!abc)/
来匹配所有不以 abc 开头的字符串,例如:
def:不以 abc 开头。
123:不以 abc 开头。
下列字符串都不能被匹配:
abcdef:以 abc 开头。
abc123:以 abc 开头。
(?
我们可以使用正则表达式 /(? 来匹配所有不以 abc 结尾的字符串,例如:
def:不以 abc 结尾。
123:不以 abc 结尾。
下列字符串都不能被匹配:
defabc:以 abc 结尾。
123abc:以 abc 结尾。
RegExp.prototype.test()
test() 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false。
/\d+/.test('hello'); // false
RegExp.prototype.exec()
exec() 方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。
String.prototype.search()
search() 方法执行正则表达式和 String 对象之间的一个搜索匹配。如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1。
String.prototype.match()
match()方法检索返回一个字符串匹配正则表达式的结果。
String.prototype.replace()
replace() 方法返回一个由替换值替换部分或所有的模式(pattern)匹配项后的新字符串。
模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。
如果pattern是字符串,则仅替换第一个匹配项。
String.prototype.split()