【发布时间】:2022-11-22 09:08:27
【问题描述】:
我有一个正则表达式模式,它在名称字符串中的单词之间寻找一个空格的有效字符。似乎工作正常,但如果我只解析一个有效字符,它会失败,知道为什么吗?
^(?!.*?\s{2})[a-zA-Z0-9-'][a-zA-Z0-9-' ]*[a-zA-Z0-9-']$
提前致谢!
【问题讨论】:
-
请添加示例数据。
-
请提供我们可以在控制台应用程序中复制、粘贴和运行的完整代码。
我有一个正则表达式模式,它在名称字符串中的单词之间寻找一个空格的有效字符。似乎工作正常,但如果我只解析一个有效字符,它会失败,知道为什么吗?
^(?!.*?\s{2})[a-zA-Z0-9-'][a-zA-Z0-9-' ]*[a-zA-Z0-9-']$
提前致谢!
【问题讨论】:
Regex101 向您展示了原因:https://regex101.com/r/u9uwUp/1 - 最后的 [a-zA-Z0-9-']$ 代表所需的第二个字符。
在末尾添加一个 ?(在 $ 锚点之前)以使第二个字符可选并且它匹配单个字符:
^(?!.*?s{2})[a-zA-Z0-9-'][a-zA-Z0-9-' ]*[a-zA-Z0-9-']?$
【讨论】: