如何使用正则表达式以及封装函数?

1、正则表达式的使用方法

(1)使用test()  方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

var str = '我今年18岁'
var reg = new RegExp("[0-9]{2}","g")

reg.test(str)      //  true

(2)使用match()  方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配

var str = '我今年18岁'
var reg = new RegExp("[0-9]{2}","g")

str.match(reg)   //  ["18"]

(3)使用search()  用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置;没有检索字符串中指定的子字符串,就会返回-1

var str = '我今年18岁'
var reg = new RegExp("[0-9]{2}","g")

str.search(reg)  //  3

(4)使用replace() 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串

var str = '我今年18岁'
var reg = /[0-9]{2}/g

str.replace(reg,"aaa")  //  我今年aaa岁

(5)使用split()  用于把一个字符串分割成字符串数组

var str = '我今年18岁'  
var reg = /[0-9]{2}/g

str.split(reg)  //  ["我今年", "岁"]

(6)使用exec()  方法用于检索字符串中的正则表达式的匹配,该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

var str = '我今年18岁'  
var reg = /[0-9]{2}/g

reg.exec(str)  //  ["18"]

 

2、正则表达式的函数使用

 (1)是否带有小数

function isDecimal(strValue ) {
  var objRegExp= /^\d+\.\d+$/;
  return objRegExp.test(strValue);
}
 
(2)校验是否中文名称组成
function ischina(str) {
  var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定义验证表达式*/
  return reg.test(str); /*进行验证*/
}
 
(3)校验是否全由8位数字组成
function isStudentNo(str) {
  var reg=/^[0-9]{8}$/; /*定义验证表达式*/
  return reg.test(str); /*进行验证*/
}
 
(4)校验电话码格式
function isTelCode(str) {
  var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
  return reg.test(str);
}
 
(5)校验邮件地址是否合法
function IsEmail(str) {
  var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
  return reg.test(str);
}
 
(6)判断输入字符串是否为数字、字母、下划线组成
function isValid(str) {
  return /^\w+$/.test(str);
}
 
(7)判断输入字符串是否全部为字母
function isletter (val){
  return /^[a-zA-Z]+$/.test(val)
 
(8) 判断输入字符串是否全部为数字
function isnum(val){
  return /^\d+$/.test(val);
 
(9)判断密码的强中弱
function checkUserpwd(pwd1, pwd2, reg, errSpan, errSpanInfo) {
  if (pwd1 == pwd2) {
    if (reg.test(pwd1)) {//表示合法
    //合法里面 我们看强中弱
    var numCount = (/[0-9]/g).test(pwd1) ? 1 : 0;
    var lowCount = (/[a-z]/g).test(pwd1) ? 1 : 0;
    var uppCount = (/[A-Z]/g).test(pwd2) ? 1 : 0;
    switch (numCount + lowCount + uppCount) {
      case 3:
      errSpan.innerHTML = "强";
      break;
      case 2:
      errSpan.innerHTML = "中";
      break;
      default:
      errSpan.innerHTML = "弱";
      break;
     }
      return true;
  } else {
    errSpan.style.color = "red";
    errSpan.innerHTML = errSpanInfo;
    return false;
  }
} else {
  errSpan.style.color = "red";
  errSpan.innerHTML = "两次输入的密码不相等";
  return false;
  }
}
(10)过滤骂人的文字
function check(value){
  var reg = /(马化腾)|(sb)|(jb)/ig;
  //过滤骂人文字 
  //value.replace(reg,"*");
  if(reg.test(value)){
    alert("含有非法字符")
  }
}
 
3、举例说明
<body>
用户:<input type="text" id="username" placeholder="请以字母_$开头的6-10位"><span id="username_span"></span><br>
   <button id="btn">注册</button>
</body>
<script>
var usernameInput = document.getElementById("username");
var usernameSpan = document.getElementById("username_span");
var btn = document.getElementById("btn");
btn.onclick = function() {
  var username = usernameInput.value;
  var reg = /^[a-z_$][a-z0-9_$]{5,9}$/gi;
  if (reg.test(username)) {
  usernameSpan.innerHTML = "√";
  usernameSpan.style.color = "green";
} else {
  usernameSpan.innerHTML = usernameInput.getAttribute("placeholder");
  usernameSpan.style.color = "red";
  }
}
</script>
 
posted @ 2019-08-01 16:39  钢之炼金术师  阅读(254)  评论(0编辑  收藏  举报