【问题标题】:RegEx for exactly two or three words正好两个或三个单词的正则表达式
【发布时间】:2014-12-15 03:23:28
【问题描述】:

有人可以帮我解决这个问题吗?

起初我试图弄清楚如何简单地检查包含一个或两个单词的输入,然后我发现 \w* ?\w+ 可以使用,而\w+ \w+ 恰好包含两个单词并且我遇到了这样的事情(这是行不通的):

/^$|^([a-zA-ZčČćĆđĐšŠžŽ -])\w+ \w+$/

我后来发现它不应该包含一两个词,而是两三个词。而且由于我无法弄清楚两个单词的正则表达式,所以我不得不在这里寻求帮助。

就像我说的那样,我需要它只允许输入 两个或三个 没有数字的单词,并添加这些字母 čČćĆđĐšŠžŽ-

我还需要它来忽略空白输入,这就是^$| 存在的原因。

我在这方面真的非常非常新,所以任何帮助都将不胜感激。

示例:

  • 马尔科·马尔科维奇
  • 约翰·史密斯
  • 玛丽-简·奥斯汀
  • 约翰三世约翰逊

【问题讨论】:

  • 你能举一些例子吗??

标签: javascript html regex unicode words


【解决方案1】:

只需将您对“单词”字符的新定义替换为所有\w。这正好是 2 个单词,中间正好有 1 个空格:

/^$|^[a-zA-ZčČćĆđĐšŠžŽ-]+ [a-zA-ZčČćĆđĐšŠžŽ-]+$/

正好 2 或 3 个单词:

/^$|^[a-zA-ZčČćĆđĐšŠžŽ-]+ [a-zA-ZčČćĆđĐšŠžŽ-]+( [a-zA-ZčČćĆđĐšŠžŽ-]+)?$/

请注意,我已删除您的字符类中的空格,因为它不应被视为“单词”的一部分,否则您的“单词”计数会混乱。

【讨论】:

    【解决方案2】:

    您可以使用Unicode regex 将其过滤掉。

    [\p{L}\s-]+ 
    

    \p{L} :这将匹配来自任何语言的任何 unicode 字母表。
    \s :空格字符。
    - :破折号 ( - )。

    你可以看到它matches here

    有关 unicode 正则表达式的更多信息,您可以refer this

    【讨论】:

    • 这是个好主意,但javascript没有这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多