![](/img/trans.png)
[英]regex to disallow space at begining and end and allow only one space between characters
[英]Regex creation to allow, disallow few characters
我是正則表達式的新手,我有這個用例:
測試有效
? 測試 - 有效
??test-無效
?test?test - 有效
???測試無效
測試?測試 - 無效
[a-zA-Z0-9?] - 似乎這不起作用
謝謝。
試試下面的正則表達式:
^(?!.*\\?\\?)[a-zA-Z0-9?]+$
首先,我們使用Negetive lookahead
- 這允許我們排除任何后跟雙問號的字符( Negetive lookahaed
不消耗字符)
由於問號在正則表達式中具有特殊含義( Quantifier
— 匹配零次和一次),因此每個問號都使用反斜杠進行轉義。
最后的加號是一個Quantifier
——匹配一次和無限次,盡可能多次
您的描述可以分解為正則表達式:
^(?:\??[a-zA-Z0-9])+\??$
您說的是字符,而您的描述僅顯示字母和數字,但可以使用\\w
(單詞字符)來代替 - 這包括下划線
它在^
和$
之間意味着整個字段必須匹配(沒有部分匹配,但如果你想要那些你可以刪除它。 +
意味着必須至少有一個匹配(所以空字符串不會匹配)。捕獲組( (\\??[a-zA-Z0-9])
) 說我必須看到一個問號后跟字母或只是字母重復多次,最后一個問號允許字符串以單個問號結尾。
你可能不想在這里捕獲組,所以我們可以從?:
開始,以防止捕獲導致:
^(?:\??[a-zA-Z0-9])+\??$
火柴
test
?test
?test?test
test?
不匹配
??test
???test
test??test
test??
<empty string>
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.