我需要一个正则表达式来匹配带有特殊字符-,.+\/&
的文本。特殊字符后续不得超过2个,并且特殊字符不能跟空格。更具体地说,我必须涵盖这些案例:
some text/
/some text
some /text
我想出了这个正则表达式:
^[-\/,\.+\&]{0,1}[\p{L}]+[-\/,\.+\&]{0,1}([\s\-']?[-\/,\.+\&]{0,1}[\p{L}]+)([-\/,\.+\&]{0,1})$
它匹配我需要的大多数情况,但未能匹配例如:
some te&xt
。我们将不胜感激。感谢。
答案 0 :(得分:1)
您可以使用
"^(?!.*(?:[-,.+/&]\\s|[-,.+/&]{2}))[^\\s\\d]+(?:\\s+[^\\s\\d]+)*$"
请参阅regex demo
<强>解释强>:
^
- 字符串开头(?!.*(?:[-,.+/&]\\s|[-,.+/&]{2}))
- 如果有一个特殊的字符[-,.+/&]
后跟一个空格\s
,或者来自[-,.+/&]
的<2个连续的特殊字符集< / LI>
[^\\s\\d]+
- 除数字和空格以外的1个或多个字符(?:\\s+[^\\s\\d]+)*
- 0+序列:
\\s+
- 1+空格[^\\s\\d]+
- 除数字和空格以外的1个或多个字符$
- 字符串结尾答案 1 :(得分:0)
我找到了解决方案:
^[-\/,\.+\&\s]{0,1}([\p{L}][-\/,\.+\&\s]{0,1})+([-\/,\.+\&\s]{0,1}([\p{L}][-\/,\.+\&\s]{0,1})+)([\p{L}][-\/,\.+\&\s]{0,1})([-\/,\.+\&\s]{0,1})$