重复正则表达式

时间:2014-04-15 12:15:34

标签: asp.net regex

我需要一个正则表达式来检查字符串中是否每个字母前后都有一个字母。

到目前为止我得到了这个:

(([-])?[a-zA-Z ]+[a-zA-Z]+[-]+[a-zA-Z]+[a-zA-Z ]+$|[a-zA-Z ]+$)|([a-zA-Z ])

适用于以下示例:

  • 测试
  • tester_test
  • Tes ter_te st

这对这些例子不起作用:

  • Tester_test tester_test
  • te st_te_st_te_st

2 个答案:

答案 0 :(得分:1)

要确保每个下划线都被一个字母包围,您可以使用

(?<=[a-zA-Z])_(?=[a-zA-Z])

Regular expression visualization

Debuggex Demo

此演示适用于您的所有输入。

这使用positive lookbehind(?<=...))和lookahead(?=...))。


请考虑将Stack Overflow Regular Expressions FAQ加入书签以供将来参考。有一个关于可能感兴趣的外观的部分,以及底部的在线测试人员列表。

答案 1 :(得分:1)

这个正则表达式似乎适用于所有示例,以及其他很多示例。 检查以下内容的否定:

^(.*(([^a-zA-Z]-)|(-[^a-zA-Z])).*)$

通过大量示例检查此正则表达式:

http://www.rubular.com/r/o2OZYJheIt