繁体   English   中英

使用正则表达式验证javascript中通用字母的输入

[英]Validate input with regular expression for universal alphabets in javascript

我有一个AntonLapshin表单验证器,在这里我要验证一个只能包含字母,空格,-和'的非空输入字段。 字母可以是az,AZ和欧洲字母æÆøØååÅööééÉèÈüÜ,等等。 有关更多详细信息请参见此。

这是我在做什么:

method  : function(input) {
    return input.value !== ''
        && input.value === /^[a-zA-Z'\- \u00c0-\u017e]+$/
}

在这里,它应该匹配: Åløæ-Bond Mc'Cool

但是失败了: 123-Bond Mc'C@o!

当我在regex tester中运行^[a-zA-Z'\\- \À-\ž]+$时,它绝对可以正常工作,但是在我的脚本中,它没有验证并抛出了无效的输入错误。

我究竟做错了什么?

我更喜欢使用RegExp 您还需要return pattern.test(input)

这将工作:)

 var test1 = "Åløæ-Bond Mc'Cool"; var test2 = "123-Bond Mc'C@o!"; var pattern = new RegExp(/^[a-zA-Z'\\- \À-\ž]+$/); function regextest(input) { return input !== '' && pattern.test(input) } console.log(regextest(test1)) console.log(regextest(test2)) 

修改您的功能以使用正则表达式进行测试

 var pattern = /^[a-zA-Z'\\- \À-\ž]+$/ var method = function(input) { return input !== '' && pattern.test(input) } //your sample strings console.log(method("Åløæ-Bond Mc'Cool")) console.log(method("123 - Bond Mc 'C@o!")) 

我为我的问题找到了一个更简单的解决方案:

method  : function(input) {
    return input.value !== '' && /^[a-zA-Z'\- \u00c0-\u017e]+$/.test(input.value)
}

问题是,在&&运算符之后,我正在检查输入值(正则表达式检查中这是错误的)而不是布尔值。

该解决方案完美地工作,不会造成混乱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM