JavaScript 正则表达式
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
搜索模式可用于文本搜索和文本替换。
什么是正则表达式?
正则表达式是由一个字符序列形成的搜索模式。
当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。
正则表达式可以是一个简单的字符,或一个更复杂的模式。
正则表达式可用于所有文本搜索和文本替换的操作。
例:var caps = new RegExp("[A-Z]", "g");
例:var caps = /[A-Z]/g;
字符 | 描述 | 例子 |
---|---|---|
[exp] | 对于中括号([])包裹的字符序列,正则表达式处理程序会匹配中括号内的任意一个字符。 | [exp]匹配e,x,p中的任意一个字符 |
[^exp] | 在中括号内前方加上^字符,将匹配中括号外的任意一个符号,除去的意思。 | [^exp]匹配e、x、p之外的任意一个字符 |
[exp1-exp2] | 使用-连字符表示匹配exp1字符到exp2字符序列中的任意一个字符。 | [A-Z]匹配A-Z任意一个字符;[0-9]匹配0-9任意一个数字 |
(exp) | 对于小括号包裹的字符序列,正则表达式会以该字符次序确切进行匹配(包含就能匹配)。 | (exp)匹配"exp"这个字符串 |
(exp1\ | exp2) | 使用管道字符\ |
exp+ | 表达式后使用+字符,表示只有当该表达式被包含一次或者多次时匹配。 | exp+匹配exp |
\s | 匹配空白字符,即空格,tab制表符,回车符 | A\sB匹配字符串中含A空白符B |
\S | 匹配除了空白字符意外的任意一个字符 | A\SB匹配A不是空白符任意字符B |
\d | 匹配从0-9的一个数字 | |
\D | 匹配除了数字以为的任意一个字符 | |
\w | 匹配一个文字字符,即一个字,数字或字母 | |
\W | 匹配除了文字字符意外的任意一个字符 |
修饰符 | 描述 |
---|---|
g | 应用正则表达式在比较字符串中找出所有匹配的项,而不是只返回第一个匹配项 |
i | 应用表达式进行比较匹配的同时,忽略大小写 |
m | 应用表达式对多行的文本进行比较匹配,而不只是比较第一行 |
有三种string类型的方法可以使用正则表达式。match()查找出能匹配正则表达式的所有子字符并将结果以字符串数组的形式返回。replace()方法查找和前者相同的子字符并用传入该方法的另一个字符串进行替换。search()只是定位能匹配到正则表达式的第一个子字符串的位置,并以数字序号形式放回字符串在整个字符串中的位置。
var regEx = /他妈的/g, string = "我去你他妈的"; alert(string.match(regEx)); //他妈的 alert(string.search(regEx)); //3 alert(string.replace(regEx, "*")); //我去你*
可用作javascript字符串的replace()方法第二个参数的特殊字符
字符序列 | 含义 | 例子 |
---|---|---|
$$ | 把找到的字符串用一个单独的$字符代替 | "Hello World".replace(/o/g, "\$\$");//"Hell\$ W\$rld" |
$& | 使用第一个参数中所给定的字符串来替换所找到的子字符串 | "Hello World".replace(/o/g, "$&");//"Hello World" |
$`(ESC下面那个`) | 使用所找到的字符串之前的文本来替换该子字符串 | "Hello World".replace(/o/g, "$`");//"HellHell WHello Wrld" |
$' | 使用所找到的字符串之后的文本来替换该子字符串 | "Hello World".replace(/o/g, "$'");//"Hell World Wrldrld" |
\$1, \$2 | 当第一个参数中包含的正则表达式使用小括号对进行表达式分组,则可以提取出特定的表达式所匹配的子字符串(\$1对应第一个小括号,\$2对应第二个小括号) | "Hello World".replace(/(o)(r)/g, "\$1\$2\$1\$2");//"Hello Wororldd"(查找到or,然后替换成oror |
还有一种就是replace() 的第二个参数可以用函数方式传入,然后用函数的返回值来替换原子字符串。
var count = 0; function replaceWithCount() { count = count + 1; return count; } alert("Hello World".replace(/o/g, replaceWithCount)); //Hell1 W2rld alert("Hello World".replace(/\s/g, replaceWithCount)); //Hello3World
这只是我写的作为笔记的正则表达式一些简单的判断和javascript用法。正则表达式还可以很复杂很强大,那就要再你要使用的时候再去挖掘思考了。如果想了解更多,可以学习Mozilla开发者网络上的关于javascript中使用正则表达式的指引介绍。写得更加详细。
Atas ialah kandungan terperinci javascript正则表达式的定义与介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!