JSLint在正则表达式上报告“预期:而不是看到')'”

时间:2016-06-02 23:11:12

标签: javascript regex jslint

function phonenumberValidation(inputtext) {
    var phonenumber = /^(?([0-9]{3})\)?[-.]?([0-9]{3})[-.]?([0-9]{4})$/
    if (inputtext.value.match(phonenumber)); {
        alert("Valid Phone Number");
        return true;
    } else {
        alert("Not a valid Phone Number");
        return false;
    }
}

当我将其发布到jslint时,我从其验证器中得到以下错误:

error

有谁知道什么是错的?

2 个答案:

答案 0 :(得分:0)

我认为你只需要逃避你的正则表达式中的破灭。但是在你的代码发布之前,你还需要做更多的工作。

以下代码lints,正则表达式仍在regex101.com结束(帽子提示为torazburo)。

/*jslint browser:true */
/*global window */
function phonenumberValidation(inputtext) {
    "use strict";
    var phonenumber = /[0-9]{3}?[\-.]?[0-9]{3}[\-.]?[0-9]{4}$/;
    if (inputtext.value.match(phonenumber)) {
        window.alert("Valid Phone Number");
        return true;
    }

    // JSLint used to complain "Unnecessary 'else' after disruption.",
    // but that's apparently no longer a requirement.
    window.alert("Not a valid Phone Number");
    return false;
}

这里有一个次要问题,as @torazaburo also mentions如何在JavaScript中检查有效的电话号码,并且已经在StackOverflow上获得了许多答案。

我有点偏向this one但是,要清楚,我从未使用the library。它谷歌,但它最近被修改了,所以很有可能它比我们在这里快速提出的任何事情做得更好。祝你好运。

答案 1 :(得分:-1)

你实际上有两个错误。正则表达式中的第一个括号需要进行转义,并且if语句中存在非法分号。更正的功能是:

function phonenumberValidation(inputtext) {
  var phonenumber = /^\(?([0-9]{3})\)?[-.]?([0-9]{3})[-.]?([0-9]{4})$/ 
  if (inputtext.value.match(phonenumber)) {
    alert("Valid Phone Number");
    return true;
  } else {
    alert("Not a valid Phone Number");
    return false;
  }
}