簡體   English   中英

正則表達式,用於驗證具有一個空格和一個可選特殊字符的數字

[英]Regular Expression for validating numbers with one space and one optional special character

有人可以告訴我如何用一個空格驗證數字序列,最后會有一個可選的特殊字符說'#',然后再跟着5個數字。

例:

12345 6587#2584

我試過了

(0(?:\d{0,11}|(?=\d* \d*$)[\d ]{0,12}))

但我不知道如何添加可選的'#'到最后是數字。

這應該可以解決問題

/^\d+\s\d+(?:#\d+)?$/

rubular上看到它

^      beginning of string
\d+    one or more numbers
\s     any whitespace character
\d+    one or more numbers
(?:    begin non-capturing group
  #    literal '#' character
  \d+  one or more numbers
)      end non-capturing group
$      end of string

編輯

/^0[\d\s]{,11}(?:#\d{,5}?$/

匹配以0開頭的字符串,后跟最多11個數字或空格。 隨后是一個可選的# ,后面有最多5個數字。

這個問題不是很清楚,但macek的建議實際上回答了你關於如何添加'#'的可選標簽后跟一些數字的問題,所以你應該嘗試一下。 (具體來說, (?:#\\d+)?$是正則表達式的相關部分; (?:#\\d{0,5})?$將確保存在0到5位數。)

但是,您的正則表達式確保在可選的“#”之前只有1個空格且最多12個數字是不正確的。 如上所述,前瞻是沒有意義的,因為\\d{0,11}將匹配任何字符串開頭的0寬度字符串(因為這相當於0位)。 你需要的是/^(?:[\\d\\s]{1,13}$)\\d*\\s\\d*$/ 這將檢查以確保存在正確數量的字符並且它們都是數字或空格,然后它將檢查字符串中是否只有一個空格。 這里有一些冗余,但這應該不是問題。 此外,請注意我使用\\s而不是空格字符,但請注意,這將匹配制表符和其他空格,這可能不是您想要的。 數字計數{1,13}假定字符串由一個沒有數字的空格組成是合法的,但空字符串是非法的; 如果這不是正確的假設,請調整括號中的值。

最后,要結合上面的正則表達式以確保正確的空格和數字計數與可選標記的正則表達式,您需要更改前瞻,以便它可以匹配#以及$ :它應該是/^(?:[\\d\\s]{1,13}(#|$))\\d*\\s\\d*(#\\d{0,5})?$/

(請注意,我實際上沒有測試過上面的正則表達式,所以我不能100%確定中間的(#|$)將適用於所有實現。如果沒有,它可以替換為多余的(#\\d{0,5})?

暫無
暫無

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

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