我是angular/javascript的新手,需要一個正則表達式,它應該允許一個字符串可選地帶有空格的兩個字符串。總共最多10個字符。字符串的正則表達式可選地被一個空格分隔
有效的字符串: 「ASDF」 「ASDF ASDF」
我已經試過類似:^ [?[AZ] {1,10} [AZ] {2,9}] {1, 10}?$,但無法使其工作
我是angular/javascript的新手,需要一個正則表達式,它應該允許一個字符串可選地帶有空格的兩個字符串。總共最多10個字符。字符串的正則表達式可選地被一個空格分隔
有效的字符串: 「ASDF」 「ASDF ASDF」
我已經試過類似:^ [?[AZ] {1,10} [AZ] {2,9}] {1, 10}?$,但無法使其工作
量詞只修改它們所處的原子(子模式)的行爲。此外,你的正則表達式被「毀了」,因爲你把所有的子模式序列放入一個字符類。
您可以使用
/^(?!.{11})[a-z]+(?: [a-z]+)?$/
如果字符可以是任何非空白字符,與\S
更換[a-z]
。
說明:
^
- 串(?!.{11})
開始 - 返回敵不過如有11個字符的字符串中(這種消極的前瞻將工作一樣(?=.{1,10}$)
開始發現 - 任何1到10個字符到字符串結尾)[a-z]+
- 1+小寫字母(用您真正允許的內容替換)(?: [a-z]+)?
- 1或0的出現:
- 空間(可以與\s
代替)[a-z]+
- 1+小寫字母(什麼你真的允許替換)$
- 結束字符串。我想你不必檢查正則表達式中的第二個標準(總共最多10個字符)。如果有一把錘子,他不必到處使用它。相反,它通過length
屬性檢查字符串的長度很簡單直接。
s = 'asdf asdf'
/^\w+(\w+)?$/.test(s) && s.length <= 10
我已經考慮過了,但我認爲如果可能的話,我寧願使用正則表達式,因爲我在幾個地方將它重用爲常量 –
@MartinNilsson您也可以將它包裝到函數中並重用它。 – gzc
我已經以相同的方式使用了多個相似的模式,所以如果我可以避開它,我仍然更喜歡正則表達式解決方案 –
謝謝!除了我能夠在字符串之後輸入多個空格之外,您的模式對我來說很好,除此之外 –
實際上,當我在https://regex101.com上測試時,模式正常工作,但空白空間問題發生在我使用它的形式 –
您可以添加'ng-trim =「false」'。 –