JS优化表达式合集转载
原创原文地址: http://www.jb51.net/article/43190.htm
JS正则表达式大全(详细实用)。有需要的朋友可以来参考一下,希望对大家有所帮助。
正则表达式中的特殊字符
字符 含意
\ 作为一个转折点,通常是在。"\"以下字符未按照其原始含义进行解释,例如/b/匹配字符"b",当b在前面添加背衬后/\b/,transfer表示匹配单词的边界。
-或-
恢复正则表达式函数字符,例如""匹配前面的元字符0次数或更多,/a/将匹配a,aa,aaa,加了"\"后,/a*/将只匹配"a*"。
^ 匹配输入或行的开头,/^a/匹配"an A"不匹配"An a"
$ 匹配输入或行尾,/a$/匹配"An a"不匹配"an A"
- 匹配前面的元字符0次数或更多,/ba*/将匹配b,ba,baa,baaa
- 匹配前面的元字符1次数或更多,/ba/将匹配ba,baa,baaa
? 匹配前面的元字符0次或1次,/ba/将匹配b,ba
(x) 匹配x保存x在名为$1...$9的变量中
x|y 匹配x或y
{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字符集(character set)匹配此集中的任何一个字符(或元字符)
[^xyz] 与此集中的任何字符都不匹配
[\b] 匹配退格字符
\b 匹配单词的边界
\B 匹配单词的非边界
\cX 这儿,X是控件,/\cM/匹配Ctrl-M
\d 匹配单词计数字符,/\d/ = /[0-9]/
\D 匹配非单词字符,/\D/ = /[^0-9]/
\n 匹配换行符
\r 匹配回车符
\s 匹配空白字符,包括\n,\r,\f,\t,\v等
\S 匹配相等的非空白字符/[^\n\f\r\t\v]/
\t 匹配选项卡
\v 匹配粗直片
\w 匹配可以组成单词的字符(alphanumeric这是我对数字的解释。),包括下划线,例如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]
\W 匹配不构成单词的字符,例如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。
正则表达式是描述字符模式的对象。
JavaScript的RegExp对象和String对象定义使用正则表达式执行强大的模式匹配、文本检索和替换功能的方法.
在JavaScript中,正则表达式由RegExp对象表示.当然,您可以使用RegExp()要创建的构造函数RegExp对象,
也可以用JavaScript 1.2新添加了一个特殊的语法来创建RegExp对象.正如字符串直接数量定义为用引号括起来的字符一样,
正则表达式直接数量也定义为包含在一对斜杠中。(/)字符.所以,JavaScript可能包含以下代码:
var pattern = /s$/;
这行代码创建了一个新的RegExp对象,并将其分配给变量parttern.这个特别的RegExp对象和所有字母"s"结束字符串都匹配.用RegExp()您还可以定义
等效正则表达式,代码如下:
var pattern = new RegExp("s$");
无论是带有正则表达式的直接量还是构造函数。RegExp(),创建一个RegExp对象相对容易.更困难的任务是使用正则表达式语法来描述字符的模式.
JavaScript采用的是Perl该语言正则表达式语法的相当完整的子集.
正则表达式的模式规范由一系列字符组成.大多数字符(包括所有字母数字字符)描述字面上匹配的字符。.这样说来,正则表达式/java/以及所有包含子字符串 "java" 匹配字符串.尽管正则表达式中的其他字符不完全匹配。,但它们都有特殊的含义.正则表达式 /s$/ 包含两个字符. 第一个特殊字符 "s" 就是字面上匹配自己.第二个字符 "$" 是一个特殊字符,它匹配字符串的结尾.所以正则表达式 /s$/ 这场比赛是字母比赛 "s" 结束字符串.
1.直接数量字符
我们已经发现,在正则表达式中所有的字母字符和数字都就是字面上匹配自己的.JavaScript正则表达式也使用反斜杠传递。()开头的转义序列支持一些非字母字符.例如,序列 "\n" 字符串中的匹配是直接换行。.在正则表达式中,许多标点符号有特殊的含义.以下是字符及其含义:
正则表达式的直接数量字符
字符 匹配
________________________________
字母数字字符 自身
\ f 换页符
\ n 换行符
\ r 回车
\ t 制表符
\ v 垂直选项卡
\ / 一个 / 直接量
\ \ 一个 \ 直接量
\ . 一个 . 直接量
\ 一个 直接量
\ + 一个 + 直接量
\ ? 一个 ? 直接量
\ | 一个 | 直接量
\ ( 一个 ( 直接量
\ ) 一个 ) 直接量
\ [ 一个 [ 直接量
\ ] 一个 ] 直接量
\ { 一个 { 直接量
\ } 一个 } 直接量
\ XXX 按十进制数 XXX 指 定的ASCII码字符
\ Xnn 按十六进制数 nn 指定的ASCII码字符
\ cX 控制字符^X. 例如, \cI等价于 \t, \cJ等价于 \n
___________________________________________________
如果要在正则表达式中使用特殊标点符号,它们前面必须有 "\" .
2.字符类
通过将单独的直接字符放在括号中,可以将它们组合成字符类。.字符类匹配它包含的任何字符,所以正则表达式 / [abc] / 和字母 "a" , "b" , "c" 任何一个都匹配.您还可以定义一个否定字符类,这些类匹配所有字符,括号内的字符除外.定义负字符提示时,要将一个 ^ 符号作为左方括号中的第一个字符.正则表达式集为 / [a-zA-z0-9] / .
由于某些字符类非常常用,所以JavaScript正则表达式语法包含一些特殊字符和转义序列来表示这些常用的类。.例如, \s 匹配空格字符,制表符和其他空白字符, \s 匹配空白字符以外的任何字符.
常规表格灰色字符类
字符 匹配
____________________________________________________
[...] 括号内的任何字符
[^...] 任何不在括号内的字符 οnkeyup="value=value.replace(/[^\d^.]+/g,)" 非数字非点替换为空
. 换行符以外的任何字符。,等价于[^\n]
\w 任何单字字符, 等价于[a-zA-Z0-9]
\W 任何非单字字符,等价于[^a-zA-Z0-9]
\s 任何空白,等价于[\ t \ n \ r \ f \ v]
\S 任何非空白字符,等价于[^\ t \ n \ r \ f \ v]
\d 任何数字,等价于[0-9]
\D 数字以外的任何字符,等价于[^0-9]
[\b] 退格直接量(特例)
________________________________________________________________
3.复制
使用上述常规表语法,可以描述两个数字 / \ d \ d /,描述四位数 / \d \ d \ d \ d /.但我们没有办法用任意数字或字符串来描述数字。.此字符串由三个字符和一个数字组成.这些复杂模式使用正则表达式语法,该语法指定表达式中每个元素重复的次数.
指定复制的字符始终显示在其作用的图案之后.由于某种类型的复制非常常见.所以有一些特殊的字符专门用来表示它们.例如: +该数字与复制上一个图案一次或多次的图案相匹配。.下表列出了复制语法.让我们先看一个示例。:
/\d{2, 4}/ //匹配2到4间的数字.
/\w{3} \d?/ //匹配三个单字字符和任意数字.
/\s+java\s+/ //匹配字符串"java" ,字符串前后可以有一个或多个空格.
/[^"] * / //匹配零个或多个非引号字符.
复制正则表达式的字符
字符 含义
__________________________________________________________________
{n, m} 至少匹配上一项n次,但不能超过m次
{n, } 匹配上一项n次,或者多次
{n} 匹配上一项恰好n次
? 匹配上一项0次或1次,前者是可选的。. 等价于 {0, 1}
- 匹配上一项1次或多次,等价于{1,}
- 匹配上一项0次或多次.等价于{0,}
___________________________________________________________________
4.选择,分组和引用
正则表达式的语法还包括指定选择,分组子表达式并引用上一个子表达式的特殊字符.字符| 用于分隔字符以供选择.例如: /ab|cd|ef/ 匹配是字符串 "ab",还是一根绳子 "cd",又或者 "ef". /\d{3}|[a-z]{4}/ 匹配是三位数,四个小写字母.括号在正则表达式中有多种作用.它的主要功能是将单个项目分组为子表达式,因此,它可以像独立单元一样使用。 *、+或? 处理这些项目.例如: /java(script) ?/ 匹配是字符串 "java",然后两者都可以 "script",也可以没有. /
(ab|cd) + |ef) / 匹配项可以是字符串。 "ef",也可以是字符串"ab" 或者 "cd" 一次或多次重复.
在正则表达式中,括号的第二种用法是在完整模式中定义子模式。当正则表达式成功匹配目标字符串时,可以从目标字符串中提取与括号中的子模式匹配的部分.例如,假设我们检索的模式是一个或多个字母后跟一个或更多个数字,然后我们可以使用该模式 / [a-z] + \ d+/.但是,既然假设我们真正关心的是每场比赛末尾的数字,然后,如果我们将模式的数字部分放在括号中 (/ [a-z] + (\d+)/) ,然后,我们可以从检索到的任何匹配中提取数字。,稍后我们将分析它。.
括号子表达式的另一种用法是,允许我们在同一正则表达式之后引用前面的子表达式.这是在字符串中传递的 \ 后跟一个或多个数字.数字指的是正则表达式中括号子表达式的位置.例如: \1 引用第一个括号的子表达式. \3 引用第三个括号的子表达式.注意,因为子表达式可以嵌套在其他子表达式中,
所以它的位置就是被计数的左括号的位置.
例如:在以下正则表达式中指定 \2:
/([Jj]ava([Ss]cript)) \sis \s (fun\w*) /
对正则表达式中上一个子表达式的引用不指定该子表达式的模式,但与该模式匹配的文本.这样,引用不仅帮助您快速输入正则表达式的重复部分。
捷方式了,它还实施了一项法规,也就是说,字符串的不同部分包含完全相同的字符。.例如:以下正则表达式匹配单引号或双引号内的所有字符.但是,它要求开始和结束引号匹配(例如,两者都是双引号或都是单引号。):
/[ "] [^ "]*[ "]/
如果开始和结束引号需要匹配,我们可以使用以下参考:
/( [ "] ) [^ "] * \1/
\1匹配第一个括号子表达式的模式.在此示例中,它执行一项法规,开始引号必须与结束引号匹配.注意,如果反斜杠后面的数字多于括号中的子表达式数,然后它将被解析为十进制转义序列,而不是参考.您可以使用完整的三个字符来表示转义序列,这将避免混淆。.例如, 使用 \044,而不是\44.以下是正则表达式的选择、分组和引号字符:
字符 含义
____________________________________________________________________
| 选择.匹配符号左侧的子表达式,右侧的子表达式
(...) 分组.将多个项目划分为一个单元.这个单元可以 *、+、?和|使用符号,如,您还可以记住与此组匹配的字符,以供以后参考。
用使用
\n 和第n匹配分组匹配的字符。.分组是括号中的子表达式(可以嵌套).组号是从左到右计数的开括号数
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除