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

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

4

2 回答 2

1

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

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

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

于 2013-07-09T12:19:44.907 回答
0

使用双反斜杠:

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

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

为了进一步解释这一点,我将制作一张表格:

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

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

myRegex = /\d+/

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

于 2013-07-09T11:47:54.273 回答