JS验证功能,用于强制输入字母数字和特殊字符输入值

时间:2019-09-14 01:28:15

标签: javascript jquery jsvalidation

我想验证具有 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

2 个答案:

答案 0 :(得分:3)

如果只想测试它是否遵循模式而不是test,则应使用matchtest返回一个布尔值,而match返回一个匹配值数组。

您可以使用此模式

^(?=.*\d)(?=.*[a-z])[a-z\d,.()#\s-]{10,}$

enter image description here

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;