Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 验证输入是否只包含特殊字符而不包含任何数字_Javascript_Regex - Fatal编程技术网

Javascript 验证输入是否只包含特殊字符而不包含任何数字

Javascript 验证输入是否只包含特殊字符而不包含任何数字,javascript,regex,Javascript,Regex,问题:我试图验证用户只输入特殊字符而不键入任何数字的情况 我用的是这个表达式 /^\+?[0-9 \.-]+$/ 验证传真时仅接受“+”号、数字、点、加高和空格。这很好用 但是使用该表达式,用户可以输入----------------,而无需键入任何数字,并且因为它包含hypen而被接受 问题:有没有办法检查输入是否包含数字?不仅仅是所有的特殊角色 更新: 这是一个有效接受输入的示例 +1-2 12-98765.43>要求它只能接受“+”符号、hypen、数字、空格和点 可能最简单的选择是对

问题:我试图验证用户只输入特殊字符而不键入任何数字的情况

我用的是这个表达式

/^\+?[0-9 \.-]+$/
验证传真时仅接受“+”号、数字、点、加高和空格。这很好用

但是使用该表达式,用户可以输入
----------------
,而无需键入任何数字,并且因为它包含hypen而被接受

问题:有没有办法检查输入是否包含数字?不仅仅是所有的特殊角色

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


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

可能最简单的选择是对每个条件进行额外的正则表达式检查。例如,使用正则表达式检查是否仅存在数字
/[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";
}
我注意到您的正则表达式测试零或一个加号,后跟列表中的字符[数字、空格、句点或连字符]。你的意思是测试任意数量的加号吗?我发布的正则表达式(
/[+.-]/
)应该适用于您希望允许的所有字符

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

更新:如您的示例所示,如果只有一个加号,并且它位于开头,那么您确实需要
\+?
位。但是,您不需要逃逸方括号内的周期。假设需要加号,您可以使用来测试它。请参阅更新的示例

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

+1-2 12-98765.43>要求仅接受“+”符号、hypen、数字和空格

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

尝试
^(\+\d-\d\d{2}-\d+(:\.\d+\124;$)


只需添加一个
lookahead

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


能否添加所有可能的有效输入字符串。i、 e.传真号码我添加了一个示例输出。这是他们对输出的唯一要求。检查
^(?=.*[0-9])\+?[0-9 \.-]+$