我在使用正则表达式时遇到了一些麻烦。 当第三个字段填充数字和字符串用空格分隔时,我需要启用第四个字段,但出于某种原因我无法使其工作。
这是模式:\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>
&#13;
(对不起我的英文)
答案 0 :(得分:0)
更改
var reg=new RegExp('/\d+ *?.*? .*');
到
var reg=new RegExp('\d+ *?.*? .*');
使用RegEx对象构造函数时无需使用/。
此外,如果您只想要一个以空格分隔的数字,后跟任意字符(包括空格)的字符串,您应该只使用: \ d +。*
答案 1 :(得分:0)
您的正则表达式 - new RegExp('/\d+ *?.*? .*')
- 评估为/\/d+ *?.*? .*/
正则表达式:/
,后跟一个或多个d
个字母,空格零或多次,任何字符零或更多次,空格和任何0+字符。问题是你在开始时有/
和一个不正确的转义d
(在构造函数表示法中需要2个反斜杠)。
您需要使用以下正则表达式:
var reg=/^\d+\s/;
它检查字符串是否以1+位开头,后面是空格。
添加.*
或.*?
没有意义,因为您只对字符串开头的内容感兴趣。
<强>详情:
^
- 字符串开始\d+
- 一位或多位\s
- 一个空白。