[英]Validate if input contains only special characters without any numbers with it
问题:我试图验证用户何时仅输入特殊字符而不用输入任何数字。
我正在使用这个表达
/^\+?[0-9 \.-]+$/
验证传真时仅接受“ +”号,数字,点,连字符和空格。 一切正常。
但是使用该表达式,用户可以输入--------------
而无需键入任何数字,并且由于包含hypen而被接受。
问题:有没有一种方法可以检查输入内容是否包含数字? 不仅是所有特殊字符?
更新:
这是有效接受输入的示例。
+1-2 12-98765.43
>要求是只能接受“ +”号,连字符,数字,空格和点。
可能最简单的选择是针对每种情况进行其他正则表达式检查。 例如,仅对数字/[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进行测试。 请参阅更新的示例。
这是有效接受输入的示例。
+ 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.