【问题标题】:Javascript regex to accept only letters, spaces, and ñJavascript 正则表达式只接受字母、空格和ñ
【发布时间】:2011-11-14 10:47:21
【问题描述】:

我正在寻找一个 Javascript 正则表达式来确保字符串只包含空格、字母和 ñ — 不区分大小写。

我已经尝试过:/^[A-Za-z _]*[A-Za-z][A-Za-z _]*$/,但它无法接受ñ

【问题讨论】:

  • 我试过:/^[A-Za-z _]*[A-Za-z][A-Za-z _]*$/ - 但这不接受 - 值。跨度>
  • 是的,因为在这种情况下我只需要一个 ASCII 值 ñ
  • 明确一点,这不是 ASCII 字符。 These are.
  • 西班牙字母表不是 az 加 ñ。 相反,它是 [aábcdeéfghijklmnñoópqrstuúüvwxyzAÁBCDEÉFGHIJKLMNÑOÓPQRSTUÚÜVWXYZ],此外,只有在您首先通过 Unicode 规范化运行数据时才会起作用Form C for Canonical Composition,通常称为 NFC。否则你的 ñ 字符可能并且有时应该包含两个独立的代码点:一个普通的 n 后跟 U+0303 COMBINING TILDE。 Unicode 字符可以有多个代码点表示。你需要正常化。
  • 耻辱你们所有人投票关闭“因为过于本地化”:这是一种非常令人尴尬的“丑陋的美国人”态度。了解如何在正则表达式中处理 Unicode 是即使是愚蠢的单语英语人士也需要做的事情,无论您是否喜欢它。请注意此评论中的弯引号和撇号。欢迎来到科罗拉多州卡农市——祝您度过愉快的 EM DASH 一天!

标签: javascript regex diacritics


【解决方案1】:
/^[ñA-Za-z _]*[ñA-Za-z][ñA-Za-z _]*$/

/^[\u00F1A-Za-z _]*[\u00F1A-Za-z][\u00F1A-Za-z _]*$/

应该可以。

Javascript 正则表达式支持\u0000\uFFFF

【讨论】:

  • 您的回复对我帮助很大!谢谢
  • 这是根本性的缺陷,因为您没有告诉他首先通过 NFC 转换运行他的数据。如果他不这样做,这些模式就不起作用。我很确定他真的想要[aábcdeéfghijklmnñoópqrstuúüvwxyzAÁBCDEÉFGHIJKLMNÑOÓPQRSTUÚÜVWXYZ] 的西班牙字母表,但这只有在你对数据进行 NFC 时才有效!!
【解决方案2】:

如果您只是想要该字符,请将其插入正则表达式,例如 [A-Za-zÑñ ]。否则,请为 Javascript 使用支持 Unicode 的 Regex 库,例如 http://xregexp.com/。遗憾的是 JS 正则表达式不支持符合 Unicode 的字符类(如 C# 正则表达式中的 \p{L}

【讨论】:

  • C# 真的让你写\p{L} 而不仅仅是\pL????这真的很愚蠢,因为它使 7 种最常见情况的说明符长度增加了三倍。这是霍夫曼的失败。有人不是很聪明。你只需要让\pL\w 更难打字。否则人们不会使用它。 \p{L} 是一个设计错误。
  • @tchrist 但最终它不到“表达式”长度的两倍。 \p{L} 是 5 个字符,\pL 是 3。是的,\pL 会更好,但我确实认为支持非 BMP 字符和 \X 会更重要:-)
【解决方案3】:

你需要使用一个字符类。

/[A-Za-z ñ]+/

【讨论】:

    【解决方案4】:

    这对我有用,允许 utf8 字符,如 ñóíú 和空格

    const validationsLetters = /^[a-zA-Z\u00C0-\u00FF ]*$/;
    

    【讨论】:

      【解决方案5】:

      这样,它会强制在开头没有空格,但如果后面有空格

      /^[a-zA-Z\u00C0-\u00FF][a-zA-Z\u00C0-\u00FF\s]*$/
      

      ..对于您可以使用的电子邮件:

      /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
      

      ..你可以使用的密码:

      /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}$/i
      

      我希望它对你有用,就像对我一样,好看..!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-12
        • 2016-03-27
        • 1970-01-01
        • 2013-01-16
        • 1970-01-01
        相关资源
        最近更新 更多