[英]Regex not working correctly - String must contain a number and a string separated by a white space
我有一些正则表达式的麻烦。 当第三个字段填充数字和字符串由空格分隔时,我需要启用第四个字段,但由于某种原因,我无法使其工作。
这是模式: \\d+ *?.*? .*
\\d+ *?.*? .*
这是一个小提琴 :
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>
(对不起我的英语不好)
更改
var reg=new RegExp('/\d+ *?.*? .*');
至
var reg=new RegExp('\d+ *?.*? .*');
使用RegEx对象构造函数时无需使用/。
此外,如果您只想要任何以空格分隔的数字,后跟任意字符(包括空格)的字符串,您只需使用:\\ d +。*
你的正则表达式 - new RegExp('/\\d+ *?.*? .*')
- 评估为/\\/d+ *?.*? .*/
/\\/d+ *?.*? .*/
正则表达式:a /
,后跟一个或多个d
字母,空格零次或多次,任何char零次或多次,空格和任何0+字符。 问题是你有/
在开始时和一个不正确的转义d
(你在构造函数表示法中需要2个反斜杠)。
您需要使用以下正则表达式:
var reg=/^\d+\s/;
它检查字符串是否以1+位开头,后面是空格。
没有必要补充.*
或.*?
因为你只对字符串开头的内容感兴趣。
细节 :
^
- 字符串开始 \\d+
- 1位或更多位数 \\s
- 一个空白。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.