2012-01-31 56 views
0

如何構建允許「任意10」或「任意12」符號的正則表達式模式? 我試過這個,但是如果符號的數量大於10,它就不能工作。特定數量符號的正則表達式

(^ {10})|(^ {12} $)。

+7

爲什麼需要正則表達式?嘗試'yourstring.length' ... – helle 2012-01-31 18:04:34

+0

換行符是否合法? – Phrogz 2012-01-31 18:08:16

+0

@helle:這取決於OP所代表的*符號*的含義。我不希望它包含換行符。 – Borodin 2012-01-31 18:12:57

回答

5

我會說,是 「十個字符,以及可選的兩個更加」:

/^.{10}(?:..)?$/ 
3

你應該試試這個正則表達式:

/^.{10}(?:..)?$/ 

它錨定到字符串的開始,任何10個字符相匹配,然後任選匹配的是兩個以上,那麼錨到t他結束的字符串。

1

如果我不能使用str.length(例如,我需要一個正則表達式傳遞給驗證功能)我會用:

/^[\d\D]{10}(?:[\d\D])?$/ 

爲了還允許換行符,並希望我從來沒有得到一個字符串與\r\n這樣我就不得不決定這是否真的是一個字符而不是兩個字符。

+0

我不知道JavaScript沒有's s修飾符。真可怕。 – Borodin 2012-01-31 18:18:50

+0

同樣令人驚訝的是,在Ruby中使用['// m'使用](https://github.com/ruby/ruby/blob/trunk/doc/re.rdoc)讓'.'包含換行符。 – Phrogz 2012-01-31 18:20:15

+0

奇怪的是,Ruby顯然沒有選擇在字符串內進行匹配'/^$ /' - 通常爲'// m'! – Borodin 2012-01-31 18:45:42