我想正则表达式来匹配例如以下字符串:
发现 - 现金返还奖金和花旗TYP®
所有非字母数字字符如-
、&
和®
,都不能一个接一个地出现。
试过这个:^[A-Za-z0-9 ]+[-]*[A-Za-z0-9 ]+[&]*[A-Za-z0-9 ]+[®]*[A-Za-z0-9 ]+$
试过这个:
^[A-Za-z0-9 ]+[-]*[A-Za-z0-9 ]+[&]*[A-Za-z0-9 ]+[®]*[A-Za-z0-9 ]+$
这不匹配,因为尾随[A-Za-z0-9 ]+$
要求行尾 1 个字符的[A-Za-z0-9 ]
,而字符串以®
结尾。
要匹配除空格外没有非字母数字字符的行,您可以使用正则表达式:
^.?([A-Za-z0-9 ]++.?)*$
这本质上是
[A-Za-z0-9 ]++
- 一连串字母数字字符或空格,后跟.?
- 最多一个额外的字符,(…)*
- 上述情况发生任意次数。
前导^.?
允许在字符串开头多一个字符。使用所有格量词++
以避免灾难性的回溯非常重要。