regex只允许相邻字符出现一次
所以我有一个当前的regx模式,它符合我的要求 但是,我只需要允许在任何时间出现一次,例如regex只允许相邻字符出现一次,regex,Regex,所以我有一个当前的regx模式,它符合我的要求 但是,我只需要允许在任何时间出现一次,例如/或- i、 e : 它与以下各项正确匹配: /name/name/amp/world-12345678/ /name/name/amp/world-12345678 /name/amp/snooker/12345678 /name/amp/snooker/12345678/ /name/amp/snooker/12345678 这些字符串不应匹配,但我的正则表达式与它们匹配: /name/amp/sno
/
或-
i、 e
:
它与以下各项正确匹配:
/name/name/amp/world-12345678/
/name/name/amp/world-12345678
/name/amp/snooker/12345678
/name/amp/snooker/12345678/
/name/amp/snooker/12345678
这些字符串不应匹配,但我的正则表达式与它们匹配:
/name/amp/snooker//12345678
#this shouldnt match because of the double `/`
/name/name/amp/world--12345678
#this shouldnt match because of the double `-`
您需要将字符类分解为一个基于组的子模式,并确保允许使用
\/?
的尾随/
,并添加锚定:
^([\w\/]+)\/amp(\/\w+(?:[-\/]\w+)*)\/?$
^ ^^^^^^^^^^^^^^^^ ^^^^
见
^
将匹配项锚定在字符串开头,$
将匹配项锚定在字符串结尾,\w+(?:[-\/]\w+*)
将匹配项:
-1个或多个单词字符\w+
-与以下子模式的零个或多个序列匹配的非捕获组:(?:[-\/]\w+*
-要么[-\/]
要么-
/
-1+字字符\w+
\/?
的尾随/
,并添加锚定:
^([\w\/]+)\/amp(\/\w+(?:[-\/]\w+)*)\/?$
^ ^^^^^^^^^^^^^^^^ ^^^^
见
^
将匹配项锚定在字符串开头,$
将匹配项锚定在字符串结尾,\w+(?:[-\/]\w+*)
将匹配项:
-1个或多个单词字符\w+
-与以下子模式的零个或多个序列匹配的非捕获组:(?:[-\/]\w+*
-要么[-\/]
要么-
/
-1+字字符\w+
- 这是我的两分钱:
(\/\w+[-\/]\w+\/?)
表示:
- \/ -> Match literally "/"
- \w+ -> Match 1 or more character like [a-zA-Z0-9_]
- [-\/] -> (Here is the magic) Match literally "-" or "/" only once
- \w+ -> Match 1 or more character like [a-zA-Z0-9_]
- \/? -> Match literally "/" zero or one time
希望能有帮助 这是我的两分钱:
(\/\w+[-\/]\w+\/?)
表示:
- \/ -> Match literally "/"
- \w+ -> Match 1 or more character like [a-zA-Z0-9_]
- [-\/] -> (Here is the magic) Match literally "-" or "/" only once
- \w+ -> Match 1 or more character like [a-zA-Z0-9_]
- \/? -> Match literally "/" zero or one time
希望能有帮助 它与@WiktorStribiżew answer有何不同?这也很有效,再次感谢。我将使用这个,因为它还排除了尾随的
/
@chinds:Check,它与潜在有效输入不匹配。@toto,Wiktor的解决方案处理潜在有效输入。这个更简单。我同意说巫师的答案更好。但它满足了OP的需求。它与@WiktorStribiżew answer有何不同?这也很有效,再次感谢。我将使用这个,因为它还排除了尾随的/
@chinds:Check,它与潜在有效输入不匹配。@toto,Wiktor的解决方案处理潜在有效输入。这个更简单。我同意说巫师的答案更好。但它满足了OP的需要,我认为另一个正则表达式实际上并不适用于所有场景(特别是当有超过1个连字符时)。末尾的/
在我的正则表达式中是可选的。请参阅使atom匹配1或0次的?
量词。我不认为其他正则表达式在所有场景中都有效(特别是当有超过1个连字符时)。末尾的/
在我的正则表达式中是可选的。查看使原子匹配1或0次的?
量词。我做了,这是链接下的内容。我做了,这是链接下的内容。
- \/ -> Match literally "/"
- \w+ -> Match 1 or more character like [a-zA-Z0-9_]
- [-\/] -> (Here is the magic) Match literally "-" or "/" only once
- \w+ -> Match 1 or more character like [a-zA-Z0-9_]
- \/? -> Match literally "/" zero or one time