[英]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.