' / \ A ^ \ + \ d + /'是什么意思?在正则表达式?

时间:2015-10-13 04:22:18

标签: regex

/\A^\+\d+/是什么意思?

我知道\d+表示匹配一个或多个数字,\A表示匹配字符串的开头,但我不知道整个正则表达式的含义。

如果我想使用此表达式来验证电话号码,那么将\z(匹配字符串结尾)添加到此表达式的正确方法是什么?

2 个答案:

答案 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/