2016-04-27 514 views
1

您好,我有一個正則表達式,最多隻允許18個字符的數字,字母和空格。正則表達式允許字母數字和空格,但不能連續兩個空格

我該如何修改這個來檢查字符串是以空格開始還是在一行中有兩個空格?

/^[0-9A-Za-z\s]{1,18}$/ 

我在本地JavaScript(而不是jQuery)和PHP中都使用這個正則表達式。

+2

如果你對這個非正則表達式做一個單獨的檢查,這真的更容易... – CBroe

+0

當你說連續兩個空格時,你的意思是字符串中的任何位置? –

+0

請注意'\ s' [不匹配*空格*](http://php.net/manual/en/regexp.reference.escape.php) – fusion3k

回答

1

可以使用負look-ahead檢查,如果字符串以空格開始,或者有2個或更多的連續空間,像:

^(?!.*\s{2,})(?!^)[0-9A-Za-z\s]{1,18}$ 
+0

建議的正則表達式選擇'「testerert 12v3k8」'或'「嘿是這樣好嗎?」它以一個空格開始,並且在一行中共有兩個空格,共18個字符? – Redu

+0

不,他們不會被匹配,這是OP想要的,我猜... –

+0

「您可以使用負向預檢來檢查字符串是以空格開始還是具有2個或更多個連續空格。 「那麼爲什麼不選擇」嘿,這是好事「引用..? (「is」和「this」之間有2個空格,只是這個textarea將雙空格轉換爲單個...) – Redu

0
(?:(?![ ]{2}).)+ 

使用本正則表達式。這可能會解決您的問題。

相關問題