javascript - 正则表达式无法正常工作 - 字符串必须包含一个数字和一个以空格分隔的字符串

标签 javascript jquery regex

我在使用正则表达式时遇到了一些问题。 当第三个字段填充一个数字和一个以空格分隔的字符串时,我需要启用第四个字段,但由于某种原因我无法使其工作。

这是模式:\d+ *?.*? .*
这是fiddle :

function validateStreetNumber(variable){
    var reg=new RegExp('/\d+ *?.*? .*');
    console.log(reg);
    var compare=reg.test(variable);
    return compare;
}

$(document).ready(function(){
    $('#state').prop('disabled',true);
    $('#address').prop('disabled',true);
    $('#number').prop('disabled',true);

    $('#city').on("input",function(){
        var value=$(this).val();

        if(value==''){
          $('#state').prop('disabled',true);
          $('#address').prop('disabled',true);
          $('#number').prop('disabled',true);
        }

        else{
          $('#state').prop('disabled',false);
        }
    });
    $('#state').on("change",function(){
        var value=$(this).val();

        if(value=='select'){
          $('#address').prop('disabled',true);
          $('#number').prop('disabled',true);
        }

        else{
          $('#address').prop('disabled',false);
        }
    });
    $('#address').on("input",function(){
        var value=$(this).val();
        var exp=validateStreetNumber(value);

        if(!exp){
          $('#number').prop('disabled',true);
        }

        else if(exp){
          $('#number').prop('disabled',false);
        }
	});
});
input, select{
  width: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="#" id="test" name="test">
    <input type="text" id="city" name="city" maxlength="100" /><br>
    <select id="state" name="state">
      <option value="select">Select</option>
      <option value="aragua">Aragua</option>
      <option value="carabobo">Carabobo</option>
      <option value="miranda">Miranda</option>
      <option value="zulia">Zulia</option>
      <option value="bolivar">Bolívar</option>
    </select><br>
    <input type="text" id="address" name="address" maxlength="100"/><br>
    <input type="text" id="number" name="number" maxlength="8"/><br>
</form>

(对不起我的英语)

最佳答案

您的正则表达式 - new RegExp('/\d+ *?.*? .*') - 计算结果为 /\/d+ *?.*? .*/ 正则表达式:一个 /,后跟一个或多个 d 字母、零次或多次空格、任何 char 零次或多次、空格以及任何 0+ 个字符。问题是您在开头有 / 和不正确转义的 d (构造函数符号中需要 2 个反斜杠)。

您需要使用以下正则表达式:

var reg=/^\d+\s/;

它检查字符串是否以 1+ 位数字开头且后面有空格。

添加 .*.*? 是没有意义的,因为您只对字符串开头的内容感兴趣。

详细信息:

  • ^ - 字符串开始
  • \d+ - 1 位或更多数字
  • \s - 空格。

关于javascript - 正则表达式无法正常工作 - 字符串必须包含一个数字和一个以空格分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42845169/

相关文章:

javascript - 停止传播委托(delegate)事件

javascript - 检查各个 div 的文本并更改内容

jquery - 如何使用 html、css 在幻灯片上使用半图像?

正则表达式验证器 MXML

python - 从文本文件读取正则表达式时如何防止 Python 转义特殊字符?

javascript - 为 bodyParser 发出带有 JSON 的问题

javascript - 从函数内部为变量赋值

javascript - 如何检查数组以查看其中是否有值,javascript

javascript - 设置值 jquery 在跟踪中工作,但在没有跟踪的情况下不起作用

regex - 字符串拆分的用例