簡體   English   中英

無法理解此正則表達式格式(電話號碼)

[英]Can't understand this regex format (Phone number)

我必須根據此正則表達式設置電話號碼的格式:

/^\\+([0-9]){1,3}\\.([0-9]\\ ?){6,14}$/

對於我的一生,我無法弄清這下半場。 我盡最大的努力

  1. 它必須以反斜杠開頭
  2. 然后1-3位數
  3. 然后是另一個反斜杠,后跟任意字符
  4. ([0-9]\\\\ ?) 6-14次迭代
  5. 字符串結尾

如果到目前為止我是對的,我無法弄清楚#4的格式。 還是我完全錯了?

假設我有這個電話號碼:+0018005551212或18005551212

我將如何形成這個號碼? 答案會很好,但解釋會更好。 謝謝!!!

不,很有可能\\\\是一個轉義的\\ ,因為其中存在另一個將檢測轉義字符的解釋層。 使用雙引號字符串時,您經常會在bash看到它(例如):

pax> echo '\' | sed 's/\\/x/'
x
pax> echo '\' | sed "s/\\\\/x/"
x

pax> echo '\' | sed 's/\/x/'
sed: -e expression #1, char 6: unterminated 's' command
pax> echo '\' | sed "s/\\/x/"
sed: -e expression #1, char 6: unterminated 's' command

使用帶雙引號的字符串, bash本身會在sed看到轉義符之前對其進行解釋,因此您需要進行兩次轉義符。 使用單引號時, bash不會解釋字符串中的轉義符,因此它們按原樣傳遞給sed

這是基於以下事實:雖然國際電話號碼可以以+開頭,但我從未見過其中帶有反斜杠的號碼。

因此規則是:

^                   start of string
\\+                 a literal +
([0-9]){1,3}        1-3 digits
\\.                 a literal .
([0-9]\\ ?){6,14}   6-14 digits, each with an optional following apace
$                   end of string

這是您當前正則表達式的解釋,以及可以匹配的一些示例。

正則表達式說明

^                   assert position at start of a line
\\+                 matches the character \ literally one or more times
([0-9]){1,3}        capturing group matching a digit between 1 to 3 times
\\                  matches the character \ literally
.                   matches any character (except newline)
(                   start of another capturing group
  [0-9]             any digit between 0 to 9   
  \\                matches the character \ literally 
   ?                match a space zero or one time
){6,14}             repeat this pattern 6 to 14 times
$                   assert position at end of a line

您當前的正則表達式與以下示例匹配(對我而言,這些看起來不像電話號碼):

\1\+9\ 9\ 9\ 9\ 9\ 9\ 
\\\12\79\ 9\ 9\ 9\ 9\ 9\ 
\123\ 9\ 9\ 9\ 9\ 9\ 9\ 
\\124\A9\ 9\ 9\ 9\ 9\ 9\ 
\\124\_9\ 9\ 9\ 9\ 9\9\ 
\\124\_9\ 9\ 9\ 9\ 9\9\ 9\9\9\ 9\9\9\ 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM