Javascript 不允许'';(点)字符串中的任意位置(正则表达式)

Javascript 不允许'';(点)字符串中的任意位置(正则表达式),javascript,regex,Javascript,Regex,我有一个正则表达式,用于在名称(西班牙语、日语等)中允许unicode字符,但我不希望在字符串中的任何位置允许“.”(点) 我尝试过这个正则表达式,但当字符串长度小于3时,它失败了。我正在使用xRegExp ^[^.][\\pL,.-''][^.]+$ 例如: NOËL // true Sanket ketkar // true .sank // false san. ket // false NOËL.some

我有一个正则表达式,用于在名称(西班牙语、日语等)中允许unicode字符,但我不希望在字符串中的任何位置允许“.”(点)

我尝试过这个正则表达式,但当字符串长度小于3时,它失败了。我正在使用xRegExp

^[^.][\\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]+$