为什么这个正则表达式无效?

时间:2013-07-09 11:44:20

标签: regex eclipse

(^\d{5}$)|(^\d{9}$)

为什么这个正则表达式使用ruby在线验证器有效,但是Eclipse中的相​​同表达似乎无效?

2 个答案:

答案 0 :(得分:1)

Eclipse可能只识别^作为输入的开头,$作为输入的结尾,而不是行的开头和结尾。尝试启用多行模式:

(?m)(?:(^\d{5}$)|(^\d{9}$))

更多信息:http://www.regular-expressions.info/anchors.html

答案 1 :(得分:0)

使用双反斜杠:

(^\\d{5}$)|(^\\d{9}$)

这是因为在Java和C ++以及大多数其他语言中,反斜杠是字符串中的转义字符。要获得文字反斜杠,必须输入两个反斜杠。

为了进一步解释,我会做一个表:

\t  |  tab character
\n  |  newline character
\d  |  ?????
\\d |  literal backslash, then "d"

在Ruby(以及JavaScript和其他一些语言)中,使用特殊的分隔符设置正则表达式,如下所示:

myRegex = /\d+/

这个特殊的“文字正则表达式表示法”让程序知道你正在创建一个正则表达式,因此它允许你使用\d而不转义它。