(^\d{5}$)|(^\d{9}$)
为什么这个正则表达式使用 ruby 在线验证器有效,但同样的表达式在 Eclipse 中似乎无效?
Eclipse 可能只识别^
为输入的开始和输入$
的结束,而不是一行的开始和结束。尝试启用多行模式:
(?m)(?:(^\d{5}$)|(^\d{9}$))
使用双反斜杠:
(^\\d{5}$)|(^\\d{9}$)
这是因为在 Java 和 C++ 以及大多数其他语言中,反斜杠是字符串中的转义字符。要获得文字反斜杠,您必须键入两个反斜杠。
为了进一步解释这一点,我将制作一张表格:
\t | tab character
\n | newline character
\d | ?????
\\d | literal backslash, then "d"
在 Ruby(以及 JavaScript 和其他一些语言)中,正则表达式使用特殊的分隔符进行分隔,如下所示:
myRegex = /\d+/
这种特殊的“文字正则表达式表示法”让程序知道您正在创建一个正则表达式,因此它允许您在\d
不转义的情况下使用它。