在编程中我们经常需要做一些数据过滤或校验,为了能够精确且方便的匹配数据,可以使用Java的正则表达式。现有如下正则表达式:
"^((13[0-9])|(15[^4])|(18[0-9])|(17[0-8]))\d{8}$"
请问下面哪个值能够被正确匹配?()
"^((13[0-9])|(15[^4])|(18[0-9])|(17[0-8]))\d{8}$"
请问下面哪个值能够被正确匹配?()
正则表达式中”^”这个字符的用法
用法一:
匹配输入的开始,如果多行标示被设置成了true,同时会匹配后面紧跟的字符。 比如: A/会匹配"An e"中的A,但是不会匹配"ab A"中的A
用法二:
当这个字符出现在一个字符集合模式的第一个字符时,他将会有不同的含义。
比如: /[^a-z\s]/会匹配"my 3 sisters"中的"3" 这里的”^”的意思是字符类的否定,上面的正则表达式的意思是匹配不是(a到z和空白字符)的字符。
那么:
什么时候”^”是否定字符,什么时候是匹配开始行
表示限定开头的示例:
/[(^\s+)(\s+$)]/g
(^cat)$
(^cat$)
^(cat)$
^(cat$)
表示否定的示例:
[^a]表示“匹配除了a的任意字符”。 [^a-zA-Z0-9]表示“找到一个非字母也非数字的字符”。 [\^abc]表示“找到一个插入符或者a或者b或者c”。
经过对比,我发现了只要是”^”这个字符是在中括号”[]”中被使用的话就是表示字符类的否定,如果不是的话就是表示限定开头。我这里说的是直接在”[]”中使用,不包括嵌套使用。
其实也就是说”[]”代表的是一个字符集,”^”只有在字符集中才是反向字符集的意思。