我想验证具有 COMPULSIVE字母数字要求
的输入字段 input 或 textarea条件-
它必须具有数字和字母
仅应允许以下特殊字符,/-()#。(即 *空格,逗号,正斜杠,连字符,哈希,圆括号,圆点* < / strong>)
它应该具有最小长度(假设10)。这里的长度是指所有输入的总长度。
请记住,这是对地址字段的强制验证
输入字段应使用类名设置为“ .address”
HTML
<input type="text" id="address_1" class="address">
<input type="text" id="address_2" class="address">
<div class="banner-message">
</div>
<div class="match-message">
</div>
jQuery / JS
$(".address").keyup(function()
{
address_1 = $("#address_1").val();
address_2 = $("#address_2").val();
full_address = address_1.concat(address_2);
// alert(address);
ADDRESS_REGEX = /^(?=.\d)(?=.[a-z])[a-z\d,.()&"##\s-]{10,}$/gi;
//$(".match-message").html(ADDRESS_REGEX.test(full_address));
$(".match-message").html(full_address); // Just to check the combined value from all inputs
if(ADDRESS_REGEX.test(full_address)==true)
{
$(".banner-message").html("Your address is perfect!");
}
else
{
$(".banner-message").html("Please input full address");
}
});
检查我的JS Fiddle
答案 0 :(得分:3)
如果只想测试它是否遵循模式而不是test
,则应使用match
,test
返回一个布尔值,而match返回一个匹配值数组。
您可以使用此模式
^(?=.*\d)(?=.*[a-z])[a-z\d,.()#\s-]{10,}$
let addresses = ["hello12312","hellohello","hello-ajd-ajdnajdnasa123","hellohahahahaha-128282()#,.","a 215469874651569847"]
addresses.forEach(address =>{
let isFine = /^(?=.*\d)(?=.*[a-z])[a-z\d,.()#\s-]{10,}$/i.test(address)
console.log(address, isFine)
})
答案 1 :(得分:0)
问题在于正则表达式中使用 g (全局)
正确
ADDRESS_REGEX = /^(?=.*\d)(?=.*[a-z])[a-z\d,.&"()##\s-]{30,}$/i;