/\A^\+\d+/
是什么意思?
我知道\d+
表示匹配一个或多个数字,\A
表示匹配字符串的开头,但我不知道整个正则表达式的含义。
如果我想使用此表达式来验证电话号码,那么将\z
(匹配字符串结尾)添加到此表达式的正确方法是什么?
答案 0 :(得分:3)
以下是用扩展模式编写的正则表达式:
r = /
\A # match the beginning of the string
^ # match the beginning of a line
\+ # match the character +
\d+ # match one or more digits
/x # extended mode
"+345 time"[r] #=> "+345"
"Now +345 time"[r] #=> nil (+ does't immediately follow beginning of the string)
"Now\n+345 time"[r] #=> nil (matches beginning of line but not string)
"+ 345 time"[r] #=> nil (space before 345 not permitted)
"+123cat456"[r] #=> "+123"
我们可以通过删除^
来简化正则表达式,因为它必须匹配第一行的开头(如果它与字符串的开头匹配)。
答案 1 :(得分:2)
查看http://rubular.com以测试此类事情。
该正则表达式(/\A^\+\d+/
)将匹配以下字符串:
+1
+123
+123456789098765431234546789
故障:
\A - matches beginning of string
^ - matches beginning of line (redundant)
\+ - matches one plus symbol
\d+ - matches one or more numeric digits
Rubular提供了一个非常好的快速参考。
要锚定到表达式的末尾,您只需添加\z
:
/\A^\+\d+\z/