【问题标题】:Regex Javascript, must start with letters, no spaces in the beggining, accents allowed正则表达式 Javascript,必须以字母开头,开头不能有空格,允许重音
【发布时间】:2020-06-25 18:43:05
【问题描述】:

我是正则表达式的新手,并尝试弄清楚如何在使用 fetch 发布表单验证之前检查它:

  1. 必须以字母开头,允许重音:A-zÀ-ú
  2. 不允许:只有一个或多个空格 -> 就像字段是:'.'或“......”,其中所有点都是空格。
  3. 允许使用破折号(但不能作为第一个字符)。
  4. 允许使用空格,但只能用于分隔单词

我的表单中的输入示例(不带引号):

允许

  • “约翰”
  • “约翰-兰博”
  • “约翰·兰博”

不允许(用空格替换所有点):

  • “约翰28”
  • “.......约翰·兰博”
  • “约翰·兰博.......”
  • “。”
  • “…………”

我当前的正则表达式:let myRegEx = /(^[A-zÀ-ú]+$)([ \-])/

任何帮助表示赞赏:)

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    据我所知,不可能仅在一个正则表达式中检查所有条件。我认为您需要一个正则表达式来检查字符,另一个来检查是否有多个连续空格。

    您需要确保名称与此正则表达式匹配: /^[A-zÀ-ù][A-zÀ-ú- ]*$/
    并且它与此正则表达式不匹配: /( ){2,}/ p>

    【讨论】:

      【解决方案2】:

      您需要将连字符和空格放入您的字符类中。您需要两个字符类,一个用于可作为主角的字符,另一个用于所有字符。

      ^[A-zÀ-ú][A-zÀ-ú -]+$
      

      如果字符串也不应该以连字符或空格结尾,您可以在+ 之后添加[A-zÀ-ú]

      我不确定([ \-]) 的用途,但那是在标记字符串结尾的$ 之后,因此不会匹配。

      https://regex101.com/r/8E3rhI/1/

      【讨论】:

      • 非常感谢,这正是我所需要的 :)
      【解决方案3】:

      因此,由于这是 javascript,您实际上可以使用 String.trim() 相当轻松地修剪空白

      玩了一会儿,我来到了这个正则表达式:

      (\w+([\s-]|$))+
      

      它工作正常,我希望它能满足您的需求:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多