【问题标题】:Validate if input contains only special characters without any numbers with it验证输入是否仅包含特殊字符而没有任何数字
【发布时间】:2016-02-19 04:14:46
【问题描述】:

问题:我正在尝试验证用户何时只输入了特殊字符而没有输入任何数字。

我正在使用这个表达式

/^\+?[0-9 \.-]+$/

在验证传真时仅接受“+”号、数字、点、连字符和空格。这工作正常。

但使用该表达式,用户无需输入任何数字即可输入--------------,并被接受,因为它包含连字符。

问题:有没有办法检查输入是否包含数字?不只是所有特殊字符?

更新:
这是有效接受输入的示例。

+1-2 12-98765.43 > 要求它只能接受“+”号、连字符、数字、空格和点。

【问题讨论】:

  • 你能添加所有可能的有效输入字符串吗?即传真号码
  • 我添加了一个示例输出。这是他们对输出的唯一要求。

标签: javascript regex


【解决方案1】:

可能最简单的选择是对每个条件进行额外的正则表达式检查。例如。有一个正则表达式检查是否存在数字/[0-9]/,另一个检查是否存在特殊字符/[ +.-]/。仅在测试字符串中不存在任何不良内容后运行这些。

var whole = /^\+?[0-9 \.-]+$/
function validate(input) {
    // input only contains valid things
    if (!input.test(whole)) { return "Input must contain only numbers, spaces, and + . or -"; }
    // input contains each required thing
    if (!input.test(/[0-9]/)) { return "Number required"; }
    if (!input.test(/[ .-]/)) { return "Special character required"; }

    // You can also test the first character of the string with charAt()
    if (input.charAt(0) !== "+") { return "Input does not begin with +"; }
    return "Valid input";
}

我注意到您的正则表达式测试零或一加,后跟列表中的一个字符 [数字、空格、句点或连字符]。你的意思是测试任何数量的优点吗?我发布的正则表达式 (/[ +.-]/) 应该适用于您想要允许的所有字符。

我不确定这是否是您要查找的内容,但如果您想验证字符串中是否存在特定的单个字符或模式,您可以使用indexOf:

// Require at least one hyphen
if (input.indexOf("-") === -1) { return "Please include a hyphen"; }

更新:如果像您的示例一样,只有一个加号并且它在开头,那么您确实需要\+? 位。但是,您不需要转义方括号内的句点。假设需要加号,您可以使用charAt 来测试它。请参阅更新的示例。

【讨论】:

    【解决方案2】:

    只需添加lookahead。

    ^(?=.*[0-9])\+?[0-9 \.-]+$
    

    查看演示。

    https://regex101.com/r/eB8xU8/9

    【讨论】:

      【解决方案3】:

      这是一个有效接受输入的示例。

      +1-2 12-98765.43 > 要求它只能接受“+”号、连字符、数字、空格

      接受的输入似乎也接受. 字符?

      试试^(\+\d-\d \d{2}-\d+)(?:\.\d+|$)

      <form>
        <input type="text" pattern="^(\+\d-\d \d{2}-\d+)(?:\.\d+|$)" required />
        <input type="submit" />
      </form>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-04
        • 1970-01-01
        • 2017-09-06
        • 1970-01-01
        • 1970-01-01
        • 2010-12-20
        • 1970-01-01
        • 2013-06-03
        相关资源
        最近更新 更多