首页 > 解决方案 > 正则表达式匹配一个单词是否以字母开头和结尾,不超过一个连续的非字母 (. *')

问题描述

我目前正在尝试找到一个匹配特定用例的正则表达式,但我没有找到任何特定的方法来实现它。正如标题所说,我想匹配一个单词是否以字母开头和结尾,只包含字母和那些字符: "\ *- \'" 。它也应该不超过一个连续的非字母。

我目前有这个,但它接受连续的非字母并且不接受单个字母[a-zA-Z][a-zA-Z \-*']+[a-zA-Z]

我希望我的正则表达式接受这个字符串

标签: regex

解决方案


您可以使用

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

请参阅正则表达式演示正则表达式图

在此处输入图像描述

细节

  • ^- 字符串锚的开始
  • [a-zA-Z]+- 1+ ASCII 字母
  • (?:[ *'-][a-zA-Z]+)*- 0 个或多个序列:
    • [ *'-]- 一个空格, *,'-
    • [a-zA-Z]+- 1+ ASCII 字母
  • $- 字符串锚的末端。

推荐阅读