[英]Regex to not allow special character without prefix or suffix
我正在为以下验证字符串编写正则表达式。 我写了以下正则表达式。
^[^\s]+[a-z]{0,}(?!.* {2})[ a-zA-z]{0,}$
它验证为
例子:
#
-> 不允许。
#A
或A#
或A2
或3A
是允许的。
一种选择是使用负前瞻断言字符串不包含单个“特殊”字符或 2 个彼此相邻的特殊字符。
^(?!.*[^a-zA-Z0-9\s][^a-zA-Z0-9\s])(?!.*(?:^| )[^a-zA-Z0-9\s](?!\S))\S+(?: \S+)*$
解释
^
字符串开始(?!
负前瞻,断言右边不包含
.*[^a-zA-Z0-9\\s][^a-zA-Z0-9\\s]
匹配除 a-zA-Z0-9 以外的 2 个字符或相邻的空白字符)
关闭前瞻(?!
负前瞻,断言右边不包含
.*(?:^| )[^a-zA-Z0-9\\s](?!\\S)
匹配除 a-zA-Z0-9 以外的单个字符或空白字符)
关闭前瞻\\S+(?: \\S+)*
匹配 1+ 个非空白字符并可选择重复一个空格和 1+ 个非空白字符$
字符串结尾请省略正则表达式中的“$”符号,因为它代表句子的结尾。
^[^\s]+[a-z]{0,}(?!.* {2})[ a-zA-z]{0,}
因此,当将上述正则表达式应用于以下内容时,它只会找到“#”。
#AA# A2 3A
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.