【问题标题】:Form validation regex and DOM: What would be the best way to implement regex in a form validation表单验证正则表达式和 DOM:在表单验证中实现正则表达式的最佳方法是什么
【发布时间】:2013-04-09 13:22:57
【问题描述】:

表单验证正则表达式和 DOM: 在表单验证中实现正则表达式的最佳方法是什么?

我目前正在这样做,但是当我验证它与值不匹配时:

if(this.value.length > 0 && this.value === /^[a-zA-Z]+$/ );

提前谢谢你!

【问题讨论】:

  • 对不起,我对 javascript 和堆栈溢出非常陌生,我的函数会检查 onBlur 表单输入是否与长度匹配并且字符是否与名字的正则表达式匹配。

标签: javascript regex forms validation dom


【解决方案1】:

为什么你的代码不计算任何值? 因为您使用了类型相等测试===。在 JavaScript 世界的动态类型中,它声明:测试这些值的类型是否相同,然后测试值是否相等。 因此,当您尝试以这种方式测试某些文本框的值时,它们是字符串

typeof('a')

此代码将产生“字符串”,因为 'a' 确实是一个字符串。但是:

typeof(/^[a-zA-Z]+$/)

这将产生“对象”。如您所见,当您尝试将字符串与对象进行比较时,类型相等性测试将始终返回 false。

这是用于测试对象及其值的相等性。对于正则表达式,请参阅“bam”答案。

【讨论】:

    【解决方案2】:

    您需要使用test() 方法。

    var patt = /^[a-zA-Z]+$/; //define your RegEx
    
        if(this.value.length > 0 && patt.test(this.value)){ //check if this.value is longer than one character AND matches your RegEx
               //do something
         };
    

    http://www.w3schools.com/jsref/jsref_regexp_test.asp

    【讨论】:

    • 我尝试使用 match(),但是一旦我启动我的函数,输入仍然无法匹配 RegEx。当 It's only the (this.value.length > 0 ) 我成功了,但是当我尝试匹配时,我得到了错误。
    • 我已经更新了答案。 test() 方法将返回 true 或 false。所以在这种情况下,如果它与您的正则表达式匹配,则 if 条件将为真,您的代码应该执行。我之前对match() 方法的回答是错误的,因为 match 会将匹配值作为数组返回,而不是布尔值,因此它不起作用...
    • 非常感谢,您的编辑帮助很大!我会支持你的投票,但我还没有足够的声誉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    相关资源
    最近更新 更多