Javascript 正则表达式不匹配序列中的两个相同字符
我知道这对你们来说很简单,但我正在绞尽脑汁寻找正则表达式来匹配下面的字符串。尝试了不同的注册表项,但每次都失败了。下面是需要匹配/不匹配的字符串Javascript 正则表达式不匹配序列中的两个相同字符,javascript,c#,angularjs,regex,Javascript,C#,Angularjs,Regex,我知道这对你们来说很简单,但我正在绞尽脑汁寻找正则表达式来匹配下面的字符串。尝试了不同的注册表项,但每次都失败了。下面是需要匹配/不匹配的字符串 S__ATHEESH – not match S_A_T_HEESH – match S’_ATHEESH – match S’’ATHEESH – not match S-A_THEESH - match 这是要求 a. A name can have the special characters – space, apostrop
S__ATHEESH – not match
S_A_T_HEESH – match
S’_ATHEESH – match
S’’ATHEESH – not match
S-A_THEESH - match
这是要求
a. A name can have the special characters – space, apostrophe, underscore and hyphen.
b. There can be more than 1 special character in a name, but same special character cannot repeat more than once continuously.
c. There should be minimum 2 characters entered in the name field
我有以下注册表项,需要修改
^([a-zA-Z]+[ _'-])*[a-zA-Z]+$
感谢您的帮助。您可以使用基于前瞻性的解决方案,如
/^(?!.*([-_ ’])\1)(?=(?:[^a-z]*[a-z]){2})[-_ ’a-z]+$/i
检查是否没有双重特殊字符(?!*([-\u'])\ 1)
检查是否存在至少两个字母(?=(?:[^a-z]*[a-z]){2}
- 如果只存在允许的字符,则匹配
a-zA-Z
。
我不确定“
是否是正确的连字符,但它是您使用的字符
这里有一个演示:您可以使用基于前瞻性的解决方案,如
/^(?!.*([-_ ’])\1)(?=(?:[^a-z]*[a-z]){2})[-_ ’a-z]+$/i
检查是否没有双重特殊字符(?!*([-\u'])\ 1)
检查是否存在至少两个字母(?=(?:[^a-z]*[a-z]){2}
- 如果只存在允许的字符,则匹配
a-zA-Z
。
我不确定“
是否是正确的连字符,但它是您使用的字符
这里有一个演示:如果我错了,请纠正我,但您的要求仅适用于不包含两个空格(或撇号、下划线或连字符)的字符串 在AFAICT的RegEx land中,断言“不”并不简单,但要求似乎很简单,可以反过来处理:
( |__|''|’’)
将匹配您标记为“不匹配”的内容,因此您只需否定布尔匹配结果
祝你好运
编辑:只是为了确保我没有被误解。我并不是说你不能完全按照op的要求去做,我只是说否定这个要求要简单得多,也更容易被其他人维护。如果我错了,请纠正我,但你的要求只是针对不包含两个空格(或撇号、下划线或连字符)的字符串 在AFAICT的RegEx land中,断言“不”并不简单,但要求似乎很简单,可以反过来处理:
( |__|''|’’)
将匹配您标记为“不匹配”的内容,因此您只需否定布尔匹配结果
祝你好运
编辑:只是为了确保我没有被误解。我并不是说你不能完全按照op的要求去做,我只是说否定这个要求要简单得多,也更容易被其他人维护。下面的正则表达式可以满足你的要求:
^(?=.{2})(?:[a-zA-Z]+|([ _’'-])(?!\1))+$
在字符串开头断言位置^
至少2个字符(?=.{2})
- 和(:
至少一个字母字符[a-zA-Z]+
- 或:
捕获组1中捕获的空格、下划线、神奇撇号、撇号或破折号([\u''-])
消极前瞻,即刚刚捕获的内容也不是下一个角色(?!\1)
- )
尽可能多次+
在字符串末尾断言位置$
以下正则表达式将满足您的要求:
^(?=.{2})(?:[a-zA-Z]+|([ _’'-])(?!\1))+$
在字符串开头断言位置^
至少2个字符(?=.{2})
- 和(:
至少一个字母字符[a-zA-Z]+
- 或:
捕获组1中捕获的空格、下划线、神奇撇号、撇号或破折号([\u''-])
消极前瞻,即刚刚捕获的内容也不是下一个角色(?!\1)
- )
尽可能多次+
在字符串末尾断言位置$
根据您的要求,任何字符串中都不应该有匹配项,因为所有字符串都有连续的重复字符。关于连续的特殊字符,您刚才在标题和要求2中说了“相同的字符”。我刚刚更正了要求2。根据您的要求,自所有人都有连续的重复字符。关于连续的特殊字符,你刚才在标题和要求2中说了“相同的字符”。我刚刚更正了要求2。