寻找一个匹配所有字母数字字符的正则表达式字符串加上一些包含+和 - 的特殊字符串。我们目前的正则表达式如下:
^[a-zA-Z0-9_,\.\-' ]+$
但是,我们还需要包含+
和-
,只要它们没有被任何一方的空白包围。例如,A+ BC
匹配,但不匹配A + BC
。
尝试使用单词边界并且没有成功。有什么想法吗?
答案 0 :(得分:1)
怎么样:
(([^ ]|^)[-+] ?| ?[-+]([^ ]|$))
这应该匹配任何一方({1}},-
或{{1} )。
如果你想在其中加入字母数字,你可以这样做:
+
然后重复一遍:
A+ BC
这将匹配,例如-
和A -BC
,但不匹配((([^ ]|^)[-+] ?| ?[-+]([^ ]|$))|[a-zA-Z...]+)
。
答案 1 :(得分:1)
如评论中所述,您希望接受+
和-
的阻止,但前提是两边都有一个字符。这似乎运作良好:
^([\w\s.,']|\b[+-]+|[+-]+\b)+$
此正则表达式只能在+
或-
之后才能找到匹配的字符。
以下一项或多项:
[\w\s.,']
- 字母数字,空格,点,逗号或撇号。
OR
\b[+-]+
- 字母数字,点,逗号或撇号,后跟+-
块
OR
[+-]+\b
- 一个+-
块后跟一个字母数字,点,逗号或撇号。
接受:
a+ bv.
a+2
A+ B -C
A+B
+1 -2
2+++-1 +1 ++3
2++++
1++ 2
拒绝:A + BC
a|+3
>+a
A - B
2+++-1 +1 ++
++++
+
字边界在这里可能效果不佳,因为+
是一个字边界。它确实适用于RegExr,但你的味道可能会有所不同。这也可以:^([\w\s.,']|[\w.,'][+-]+|[+-]+[\w.,'])+$