Javascript 不允许'';(点)字符串中的任意位置(正则表达式)
我有一个正则表达式,用于在名称(西班牙语、日语等)中允许unicode字符,但我不希望在字符串中的任何位置允许“.”(点) 我尝试过这个正则表达式,但当字符串长度小于3时,它失败了。我正在使用xRegExpJavascript 不允许'';(点)字符串中的任意位置(正则表达式),javascript,regex,Javascript,Regex,我有一个正则表达式,用于在名称(西班牙语、日语等)中允许unicode字符,但我不希望在字符串中的任何位置允许“.”(点) 我尝试过这个正则表达式,但当字符串长度小于3时,它失败了。我正在使用xRegExp ^[^.][\\pL,.-''][^.]+$ 例如: NOËL // true Sanket ketkar // true .sank // false san. ket // false NOËL.some
^[^.][\\pL,.-''][^.]+$
例如:
NOËL // true
Sanket ketkar // true
.sank // false
san. ket // false
NOËL.some // false
基本上,当名称中有“.”时,它应该返回false。您可以尝试:
^[\p{L},\-\s‘’]+(?!\.)$
如图所示:
解释-
正则表达式的第一部分[\p{L},\-\s']+
匹配任何unicode字母、连字符或空格(由\s
给出)(?!\)
是regex中的一个负向前瞻,它基本上告诉regex,对于每个匹配,它后面不应该跟一个
您的模式^[^.][\\pL,.-''][^.]+$
至少匹配3个字符,因为您使用了3个字符的类,其中前两个字符至少匹配1个字符,最后一个字符匹配1次或多次
您可以从您的字符类中删除该点,并仅重复该字符类以匹配所列任何字符的1+倍,以便在少于3个字符时也匹配
^[\p{L} ,'‘’-]+$
或者您可以使用:
字符串的开头^
求反字符类,匹配除点或换行符以外的任何字符[^.\r\n]+
字符串结尾$
^[^.]+$
它将匹配任何在字符串开始和结束之间不包含点的非空字符串
如果在开始和结束之间的某个地方(即任何地方)有一个点,它将失败。为了澄清,您是否希望匹配
点之间的每一行,或者你想让每一行都不包含点吗?如果在原始问题中包含一些示例输入和所需的输出,这会很有帮助。现在开始:john mikel->true wu->true.wu->false j.ohn mikel->false
基本上,除了为了让包含点的那个更清晰,我在输入中使用它进行名称验证。这会有帮助吗?那确实很有帮助。另外,您希望只匹配西班牙语名称,对吗?这不仅仅是西班牙语,而且应该允许使用西班牙语字符。我认为缺少了一些东西。这不会传递包含数字或特殊字符(如“(”或“)”的名称。我的要求是,除了包含dot的字符串之外,任何字符串都可以。您的负前瞻(?!\)$
无法匹配任何内容,因此完全是多余的。在一条线的尽头,你永远找不到一个点。这个正则表达式在功能上与^[\p{L},\-\s']+$
^[^.\r\n]+$