js正则表达式

272 阅读3分钟

正则匹配符

[a-z] :匹配小写字母从a-z中的任一字符

[A-Z] :匹配大写字母从A-Z中的任一字符

[0-9] :匹配数字从0-9任一字符,相当于\d

[0-9a-z] :匹配数字从0-9或小写字母从a-z任一字符

[0-9a-zA-Z] :匹配数字从0-9,小写字母从a-z或者是大写字母从A-Z的任一字符

[abcd] :匹配字符abcd中的任一字符

[1234] :匹配数字1234中的任一字符

[^a-z] :匹配除小写字母从a-z以外的任一字符

[^0-9] :匹配除数字从0-9以外的任一字符

[^abcd] :匹配除abcd以外的任一字符

\d :匹配一个数字字符,用字符簇表示[0-9]

\D :匹配一个非数字字符,也可以使用字符簇[^0-9]或[^\d]来表示

\w :匹配包括下划线的任何单词字符,用字符簇[0-9a-zA-Z_]

\W :匹配任何非单词字符,[^0-9a-zA-Z_]或[^\w]

\s :匹配任何空白字符,空格、制表符、换行符都可以通过\s匹配

\S :匹配任何非空白字符,[^\s]

.(点号) :匹配除 "\n" 之外的任何单个字符


正则字符

$ :匹配输入字符串的结尾位置。

^ :匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。

() :标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。

* :匹配前面的子表达式零次或多次。

+ :匹配前面的子表达式一次或多次。

. :匹配除换行符 \n 之外的任何单字符。

[ :标记一个中括号表达式的开始。

? :匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。

\ :将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。

{ :标记限定符表达式的开始。

| :指明两项之间的一个选择。

* :匹配前面的子表达式零次或多次。

+ :匹配前面的子表达式一次或多次。

? :匹配前面的子表达式零次或一次。

{n} n :是一个非负整数。匹配确定的 n 次。

{n,} n :是一个非负整数。至少匹配n 次。

{n,m} :m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。


正则表达式类型

/pattern/attributes

参数attributes是一个可选字符串,常用属性gi,分别用于指定全局匹配和忽略大小写的匹配。


正则表达式方法

test()

检索字符串中的指定值,返回true或者false

var reg = /tongxue/;
var str = "gxtongxue is tongxue";
console.log(reg.test(str)); // true

exec()

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

var reg = /(tong)(xue)/; // ()里面是子表达式
var str = "gxtongxue is tongxue";
console.log(reg.exec(str));

search()

字符串查找,返回对应的位置值

var reg = /(tong)(xue)/;
var str = "gxtongxue is tongxue";
console.log(str.search(reg)); // 2

match()

字符串匹配

var reg = /第(\d+)章/;
var str = "第20章 第10章";
console.log(str.match(reg));

var reg = /第(\d+)章/g;
var str = "第20章 第10章";
console.log(str.match(reg)); // ["第20章", "第10章"]

replace()

字符串替换

var reg = /\d+/g;
var str = "第20章 第10章";
console.log(str.replace(reg,"几")); // 第几章 第几章

split()

字符串分割

var reg = /\d+/g;
var str = "第20章 第10章";
console.log(str.split(reg)); // ["第", "章 第", "章"]