字符集
我们也可调用indexOf来找出字符串中是否包含abc。正则表达式允许我们表达一些更复杂的模式。
假如我们想匹配任意数字。在正则表达式中,我们可以将一组字符放在两个方括号之间,该表达式可以匹配方括号中的任意字符。
下面两个表达式都可以匹配包含数字的字符串。
console.log(/[0123456789]/.test("in 1992"));// → trueconsole.log(/[0-9]/.test("in 1992"));// → true
我们可以在方括号中的两个字符间插入连字符(–),来指定一个字符范围,范围内的字符顺序由字符 Unicode 代码决定。在 Unicode 字符顺序中,0 到 9 是从左到右彼此相邻的(代码从48到57),因此[0-9]覆盖了这一范围内的所有字符,也就是说可以匹配任意数字。
许多常见字符组都有自己的内置简写。 数字就是其中之一:\ d与[0-9]表示相同的东西。
\d任意数字符号\w字母和数字符号(单词符号)\s任意空白符号(空格,制表符,换行符等类似符号)\D非数字符号\W非字母和数字符号\S非空白符号.除了换行符以外的任意符号
因此你可以使用下面的表达式匹配类似于30-01-2003 15:20这样的日期数字格式:
let dateTime = /\d\d-\d\d-\d\d\d\d \d\d:\d\d/;console.log(dateTime.test("30-01-2003 15:20"));// → trueconsole.log(dateTime.test("30-jan-2003 15:20"));// → false
这个表达式看起来是不是非常糟糕?该表达式中一半都是反斜杠,影响读者的理解,使得读者难以揣摩表达式实际想要表达的模式。稍后我们会看到一个稍加改进的版本。
我们也可以将这些反斜杠代码用在方括号中。例如,[\d.]匹配任意数字或一个句号。但是方括号中的句号会失去其特殊含义。其他特殊字符也是如此,比如+。
你可以在左方括号后添加脱字符(^)来排除某个字符集,即表示不匹配这组字符中的任何字符。
let notBinary = /[^01]/;console.log(notBinary.test("1100100010100110"));// → falseconsole.log(notBinary.test("1100100010200110"));// → true
