正则表达式表示没有非字母数字字符的行



我想正则表达式来匹配例如以下字符串:

发现 - 现金返还奖金和花旗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 ]++- 一连串字母数字字符或空格,后跟
  • .?- 最多一个额外的字符,
  • (…)*- 上述情况发生任意次数。

前导^.?允许在字符串开头多一个字符。使用所有格量词++以避免灾难性的回溯非常重要。

相关内容

  • 没有找到相关文章

最新更新