2013-12-15 74 views
1

已經在這幾個小時了,似乎無法得到這個看似簡單的正則表達式的工作。我已經成功地排除了單個字符^[^']+$或只是[^'],併成功與所有空間[\\S],但我不知道如何將它們組合在一個單一的表達式。正則表達式除了所有空格和一個特殊字符之外的所有內容

我已經嘗試了很多不同的組合:

^(?=[^'])[\\S]$ 
[\\S-[']] 

的規則很簡單 - 不能是所有的空間,不能包含撇號。有人可以幫我從這裏出去嗎?

回答

1

我認爲這會做的伎倆:

if (/'|^[ ]+$/.exec(str)) { 
    // invalid... 
} 
+0

是的......像一個魅力工作。我再次想到了解決方案。 –

+2

@ChrisGessler,使用測試代替exec會更有效率。此外,這將錯過製表符和其他空白字符。 –

+0

@DanielGimenez - 感謝您的高舉。我相信這就是爲什麼我首先使用\ S的原因。 –

2

如果您需要測試所有的空格或撇號,那麼你可以使用以下方法:

if (/'|^\s+$/.test(str)) { 
    // is invalid 
} 
+0

也許我誤解了Chris的這個問題,但我認爲它會失敗的字符串「克里斯的應用程序」,不是嗎?它不會將其標記爲無效。 –

+0

啊......真正的數據。不能是所有空格或包含撇號。 –

+0

@ChrisGessler然後可以應用組合的正則表達式。請參閱最新的答案。 – VisioN

1

以下將是如果屬實整個弦都是白色的速度,或者有任何撇號的例子。

if (/^\s+$|'/.test(s)) { 
    // is invalid 
} 

正則表達式具有

  • ^\s+$

    之間的交替:
    • ^:開始字符串
    • \s:白色空間(1次以上)
    • $:結束字符串
  • ':撇號字符

如果任一這兩個序列的匹配則該字符串是無效的。

+0

遲到了,但是 - 這似乎是共識。 +1提供解釋。 –

相關問題