2016-02-26 153 views
0

我有一個正則表達式的條件,限制是8個字符,它應該接受數字,字母和?,如果我們在字段中輸入*它應該給出錯誤。只有一個字符(*)或其他字母數字的正則表達式

或者如果我們在輸入字段中輸入*,那麼整個字段只能接受一個*,除此以外。

例如:*相當於wer?23w4

正則表達式是:

/[a-zA-Z0-9?]{8}/ 
+0

缺少錨:'^ \ * |([A-ZA-Z0-9?] {8} )'$ – Tushar

回答

2

可以使用交替操作符(|)來指定一個非此即彼的條件。你的情況:

/\*|[a-zA-Z0-9?]{8}/ 

這意味着要匹配:

  • *字符,沒有別的
  • 或者,由小寫字母,大寫字母,數字或?恰好八個字符。

注意,這取決於你如何在代碼中使用這個,你可能需要添加錨^$,以確保它測試針對整個領域:

/^(?:\*|[a-zA-Z0-9?]{8})$/ 

Regular expression visualization

Debuggex Demo

0

試試

/(\*|[a-zA-Z0-9\?]{8})/g 

例如

"33asdsad".match(/(\*|[a-zA-Z0-9\?]{8})/g); 

"*".match(/(\*|[a-zA-Z0-9\?]{8})/g) 

"234234?d".match(/(\*|[a-zA-Z0-9\?]{8})/g) 
相關問題