首页 > 试题广场 >

在编程中我们经常需要做一些数据过滤或校验,为了能够精确且方便

[单选题]
在编程中我们经常需要做一些数据过滤或校验,为了能够精确且方便的匹配数据,可以使用Java的正则表达式。现有如下正则表达式:
"^((13[0-9])|(15[^4])|(18[0-9])|(17[0-8]))\d{8}$"
请问下面哪个值能够被正确匹配?()
  • 182217265233
  • 13855112578
  • 15417850808
  • 16808808888

正则表达式中”^”这个字符的用法

用法一:

    匹配输入的开始,如果多行标示被设置成了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”。  

经过对比,我发现了只要是”^”这个字符是在中括号”[]”中被使用的话就是表示字符类的否定,如果不是的话就是表示限定开头。我这里说的是直接在”[]”中使用,不包括嵌套使用。 
其实也就是说”[]”代表的是一个字符集,”^”只有在字符集中才是反向字符集的意思。





发表于 2018-06-22 20:17:49 回复(0)
首先以13、15、18或17开头 d错误
15开头后面的一个字符不能是4  c错误
18开头后面接一个0-9的字符,然后再接8个数字 a错误

发表于 2018-11-02 17:08:39 回复(0)
A 正则匹配11位,A选项有12位
B 正确
C 15[^4]  15后面不能跟4
D 168 不能匹配开头
发表于 2021-01-21 11:49:11 回复(0)