正则表达式在两个字符之间匹配特殊字符

时间:2020-08-05 15:16:54

标签: regex

所以我有以下要求:

  1. a-z或A-Z之间的任何字母
  2. 第一个字符必须是字母
  3. 不允许使用数字字符
  4. 除以下三个字符外,不允许使用特殊字符:.-’
  5. 而且它们只能在字母之间

到目前为止,要解决此问题,我得到了以下2个正则表达式:

^[a-zA-Z][a-zA-Z ]*$

这是要解决点1,2,3

(?<=[a-zA-Z])[.\-'](?=[a-zA-Z])

这是解决问题4,5

测试用例可以是像这样的单词:

  • abc(通过)
  • abc的(通过)
  • abc'(失败)
  • abc'(失败)

但是我无法将它们合并。我已经尝试过,但没有得到预期的结果。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用

^[a-zA-Z]+(?:[-.'][a-zA-Z]+)*$

请参见regex demo

详细信息

  • ^-字符串的开头
  • [a-zA-Z]+-1个以上ASCII字母
  • (?:[-.'][a-zA-Z]+)*-0次或多次出现
    • [-.']-连字符,点或单引号
    • [a-zA-Z]+-1个以上ASCII字母
  • $-字符串结尾