首页 > 解决方案 > 正则表达式匹配多组 a-zA-Z0-9- 但不是 2 个连续的下划线 __

问题描述

我有几个字符串,通常是单词和字母,大写和小写,与数字混合。除非字符串中有两个连续的下划线,否则我想将它们全部匹配。我的字符串示例:

first-string-String-71-word
second-otherword-X-17-word-last-word
third-nextword-8-word__otherword

现在我正在寻找一个匹配第一个和第二个但不匹配第三个的正则表达式。

([a-zA-Z0-9-]+) 
(?!__)([a-zA-Z0-9-]+)
([a-zA-Z0-9-^(__)]+)

这些似乎都不起作用 - 这里的正确方法是什么?

https://regex101.com/r/i7AnSS/1

标签: regex

解决方案


_您可以在字符串中连续添加两个负前瞻。请注意,您需要将正则表达式锚定到字符串的开头和结尾,否则它可以从中途匹配。

^(?!.*?__)([a-zA-Z0-9_-]+)$

https://regex101.com/r/i7AnSS/3

请注意,这假设您的字符串允许在其中包含单个字符串_。如果不是这种情况,那么简单

^([a-zA-Z0-9-]+)$

将排除其中包含的任何字符串_


推荐阅读