javascript正则表达式

RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具

var reg = /pattern/attributes
var reg = new RegExp(pattern, attributes);
//参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。 
//参数 attributes 是一个可选的字符串,包含属性 “g”、”i” 和 “m”,分别用于指定全局匹配、区分大小写的匹配和多行匹配。
//ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

元字符:

  则是描述字符的字符,比如,数字,字母,空格,换行等。元字符大多以反斜杠开头 \,因为前面展示的「正则表达式字面量」写法里,用的是两个斜杠包裹,所以得用反斜杠或其他标识符

\d,匹配单个数字;d 是 digit 这个单词的缩写,它的中文意思就是「数字」
\D,
\w,匹配单个单词字符,w 是 word 的缩写,就是字母 a-z,数字 0-9,不包括逗号、句号、加减乘除号、括号等。
\W,
\s,匹配单个空白字符,s 是 space 的缩写,就是空白的意思。
\S
\n,匹配换行符,n 是 newline 的缩写,中文就是换行。
\r,匹配回车符,r 就是 return 的缩写,回车在这里就是它的中文意思。
\t,匹配制表符,就是 tab 键打出来的一串用以缩进的空白字符,tab 是 tabel 的缩写,table 就有表格和制表的意思。
\b,匹配单词边界,b 是 boundary 的缩写,中文就是边界的意思

正则表达式里的量词:

     元字符大多只能表示单个字符的类型。我们还需要量词,以表示「有,有0到多个,有至少一个,有n个以上,有n到m个,以某个字符开头,以某个字符结尾等」。

n+,至少1个 n 类型的字符

 n*,0到多个 n 类型的字符

 n?,0 或 1 个 n 类型的字符

 n{X},X 个 n 类型的字符

 n{X,Y},X 到 Y 个 n 类型的字符

 n{X,},至少 X 个 n 类型的字符

 n$,以 n 类型的字符结尾

 ^n,以 n 类型的字符开头方括号:表达式

方括号

  其实,方括号用于查找某个范围内的字符,只是不是所有范围都是关于某个字符类型n 的数量和出现位置,有些范围跟多个字符组成的集合有关。比如,在这几个字符类型之内,在这几个字符类型之外的,便利地表示 26 个字母,便利地表示 10 个数字字符。

[abc],查找方括号之间的任何字符。
[^abc],查找任何不在方括号之间的字符。
[0-9],查找任何从 0 至 9 的数字。
[a-z],查找任何从小写 a 到小写 z 的字符。
[A-Z],查找任何从大写 A 到大写 Z 的字符。
[A-z],查找任何从大写 A 到小写 z 的字符。
[adgk],查找给定集合内的任何字符。
[^adgk],查找给定集合外的任何字符。
(red|blue|green),查找任何指定的选项。

字符转意
  查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\\

分枝条件

  正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开。

  0\d{2}-\d{8}|0\d{3}-\d{7}表示0开头接两位数字,-后面连着8位数的电话号码,比如020-12345678 或者 0开头接三位数字,-后面连着7位数的电话号码,比如0751-1234567使用分枝条件时,要注意各个条件的顺序。原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。

小括号()分组
  如果想要重复多个字符又,你可以用小括号来指定子表达式(也叫做分组)
  (\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\d{1,3}匹配1到3位的数字,(\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})。
  正则表达式中并不提供关于数学的任何功能,所以只能使用冗长的分组,选择,字符类来描述一个正确的IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

小试牛刀

  匹配一个电话号码,形式如 020-88813243

  简单版本,(开头)三个数字+一个横杠+八个数字(结尾),就是/^\d{3}-\d{8}$/

  需求变化,只匹配 020 开头的电话号码,就是/^020-\d{8}$/

  需求变化,支持分机,分机为 5 个数字,加后缀,就是/^020-\d{8}-\d{5}$/

  需求变化,电话号码可以是7个,用区间量词,就是/^020-\d{7,8}-\d{5}$/

  需求变化,有可能没有分机,用区间量词,中括号包裹住分机为一组,后面加个问号,表示0或多个,就是/^020-\d{7,8}(-\d{5})?$/

  需求变化,区隔符可能是横杠,也可能是星号或空格,用集合表达式,就是/^020[-*\s]\d{7,8}([-*\s]\d{5})?$/

 

正则表达式验证大全:https://www.cnblogs.com/hai-ping/articles/2997538.html

 

 

posted @ 2018-07-13 20:12  ZaneY  阅读(241)  评论(0编辑  收藏  举报