您的位置:时时app平台注册网站 > 编程知识 > javascript正则表明式功底知识入门,javascript正则表

javascript正则表明式功底知识入门,javascript正则表

2019-12-06 10:59

虽然现在很多验证都由前端,但是掌握正则表达式会让你在程序开发过程中快速解决很多东西,特别是在处理字符串的时候,算是比较全面的正则用法,如果有需要可联系我,可直接运行的源码。会持续更新... 

javascript正则表达式基础知识入门,javascript正则表达式

正则表达式的好处到底在哪里呢,下面我们先进行个了解:
我们用js中处理字符串的方法,写出取出字符串中数字的函数:

 var str='dgh6a567sdo23ujaloo932';
   function getNumber(obj){
     var arr=[];
     for (var i = 0; i < obj.length; i  ) {
       if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
           arr.push(obj.charAt(i));
         }
     }
     return arr;
   };
   console.log(getNumber(str));  //["6", "5", "6", "7", "2", "3", "9", "3", "2"]

上面的方法我们取出了字符串中的数字,但是我们不满意,我们需要的是['6','567','23','932']的形式,对函数进行改造:

function getNumber(obj){
    var arr=[];
    var temp='';
    for (var i = 0; i < obj.length; i  ) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          temp =obj.charAt(i);//现将相邻的数字连接起来
        }
        else{ //每当连接的数字断开时,就在这执行
          if (temp) {
            arr.push(temp);
            temp='';
          }
        };
    }
    if (temp) { //这里的作用是为了显示最后数字的,原因不想解释
            arr.push(temp);
            temp='';
          }
    return arr;
  };

那我们用正则表达式的方式来解决这个函数实现的功能:

function getNumber2(obj){
    var arr=[];
    var re=/d /g;
    arr.push(obj.match(re));
    return arr;
  };

完整的看看程序的运行结果吧:

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'>
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6a567sdo23ujaloo932';
  /*function getNumber(obj){
    var arr=[];
    for (var i = 0; i < obj.length; i  ) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          arr.push(obj.charAt(i));
        }
    }
    return arr;
  };*/
  function getNumber(obj){
    var arr=[];
    var temp='';
    for (var i = 0; i < obj.length; i  ) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          temp =obj.charAt(i);//现将相邻的数字连接起来
        }
        else{ //每当连接的数字断开时,就在这执行
          if (temp) {
            arr.push(temp);
            temp='';
          }
        };
    }
    if (temp) { //这里的作用是为了显示最后数字的,原因不想解释
            arr.push(temp);
            temp='';
          }
    return arr;
  };
  function getNumber2(obj){
    var arr=[];
    var re=/d /g;
    arr.push(obj.match(re));
    return arr;
  };
  console.log(getNumber(str));
  console.log(getNumber2(str)); 
};
</script>
<body>
</body>
</html>

从上面的例子我们可以看出来,正则表达式的方法有着同样的效果,但是代码更加简短,更加高效,这就是正则的好处啊
正则是为了更高效的处理字符串而产生的,和字符串处理方法一样,只是更加高效、简洁(正则只可以处理字符串)

下面我们来系统的学习一下,正则的几个常用的方法:

在这之前说一下正则的写法,正则和其他对象array()、object()、Date()等都一样,都有初始化的方式
var re=/这里面要写匹配的东西,不写的话就是注视符号了/; //这样的就是正则对象的简单创建,后面文章我都是直接用它来代替的
var re=new RegExp(); //这样的创建方式也可以的,大家懂得,只是和简写不同的是参数传递有点不一样

(1)test

含义:正则去匹配字符串,当匹配成功返回true,反之,返回false;
语法:re.test(字符串);
先说点转义字符吧 :
/s空格 /S非空格 /d数字 /D非数字 /w字符(字母、数字、下划线) /W非字符
举个例子:判断一个字符串是否都是数字

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6a567sdo23ujaloo932';
  var str2='123456';
  function allNumber(obj){
    var re=/D/;//定义正则对象匹配非数字,只要有不是数字的就是匹配结束返回结果
    if (re.test(obj)) {
      alert('不全是数字');
    }
    else{
      alert('全是数字');
    };
  };
  allNumber(str);
  allNumber(str2);

};
</script>
<body>
</body>
</html>

(2)search

含义:正则去匹配字符串,当匹配成功返回匹配成功的位置,反之,返回-1;和字符串处理方法中的indexof()功能一样
语法:字符串.search(re);
[color=Red]注意:正则中默认是区分大小写的,要想让其不区分大小写的就是加标识i;[/color]
例子,不区分大小写的去正则匹配字符串中某个字符

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6b567sdo23ujaloo932';
  function searchStr(obj){
    var re=/B/i;//定义正则对象匹配b字符,不区分大小写
    alert(obj.search(re));  
  };
  searchStr(str);
};
</script>
<body>
</body>
</html>

(3)match

含义:正则去匹配字符串,当匹配成功返回匹配成功的数组,反之,返回Null
语法:字符串.match(re);
[color=Red]注意:正则中默认是只要是匹配成功就立刻结束返回相应的值,不会继续匹配。若想查找全部就需要加表示g(全局匹配)[/color]
例子:匹配字符串中的连续数字并将其存入一个数组中(连续的数字作为数组用的一项)

程序中的“ ”是匹配至少出现一次,为什么要这样做呢?
前面我们提过“正则中默认是只要是匹配成功就立刻结束返回相应的值”,那么在字符串中匹配到一个数字时就会结束,将一个数字返回数组,这时候我们需要的是用g来让它匹配每一个元素。
有没有发现连续的数字没有确定的个数,用“ ”就可以满足动态的数字个数。

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6b567sdo23ujaloo932';
  function searchStr1(obj){
    var re=/d/;  
    return obj.match(re);
  };
  function searchStr2(obj){
    var re=/d/g;  
    return obj.match(re);
  };
  function searchStr3(obj){
    var re=/dd/g;//全局匹配2位数  
    return obj.match(re);
  };
  function searchStr4(obj){
    var re=/d /g;  
    return obj.match(re);
  };
  console.log(searchStr1(str));
  console.log(searchStr2(str));
  console.log(searchStr3(str));
  console.log(searchStr4(str));

};
</script>
<body>
</body>
</html>

(4)replace

含义:正则去匹配字符串,当匹配成功的字符串被新的字符串所替代
语法:字符串.replace(re);
例子:将字符串中的所有的a都替换成b

<!DOCTYPE>
<html>
<head>
 <meta charset='utf-8'> 
 <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
 var str='daah6b5a7sdo23ujaloo932';
 function replaceStr(obj){
  var re=/a/g; //全局匹配a
  return obj.replace(re,'b');
 };
 console.log(replaceStr(str));
};
</script>
<body>
</body>
</html>

暂时写到这里后续跟新。。。

以上所述就是本文的全部内容了,希望大家能够喜欢。

正则表达式的好处到底在哪里呢,下面我们先进行个了解: 我们用js中处理字符串的...

javascript正则表达式基础知识入门

   很长时间没看正则表达式了,碰巧今天用到,温故知新了一把,这里记录下来,分享给大家,都是些基础的知识,重点给大家讲解的是正则表达式中4种常用的方法,50% 的举一反三练习中的原创。

  正则表达式的好处到底在哪里呢,下面我们先进行个了解:

  我们用js中处理字符串的方法,写出取出字符串中数字的函数:

  ?

1

2

3

4

5

6

7

8

9

10

11

var str='dgh6a567sdo23ujaloo932';

function getNumber(obj){

var arr=[];

for (var i = 0; i < obj.length; i ) {

if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){

arr.push(obj.charAt(i));

}

}

return arr;

};

console.log(getNumber(str)); //["6", "5", "6", "7", "2", "3", "9", "3", "2"]

  上面的方法我们取出了字符串中的数字,但是我们不满意,我们需要的是['6','567','23','932']的形式,对函数进行改造:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

function getNumber(obj){

var arr=[];

var temp='';

for (var i = 0; i < obj.length; i ) {

if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){

temp =obj.charAt(i);//现将相邻的数字连接起来

}

else{ //每当连接的数字断开时,就在这执行

if (temp) {

arr.push(temp);

temp='';

}

};

}

if (temp) { //这里的作用是为了显示最后数字的,原因不想解释

arr.push(temp);

temp='';

}

return arr;

};

  那我们用正则表达式的方式来解决这个函数实现的功能:

  ?

1

2

3

4

5

6

function getNumber2(obj){

var arr=[];

var re=/d /g;

arr.push(obj.match(re));

return arr;

};

  完整的看看程序的运行结果吧:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

<!DOCTYPE>

<html>

<head>

<meta charset='utf-8'>

<title></title>

</head>

<script type="text/javascript">

window.onload=function(){

var str='dgh6a567sdo23ujaloo932';

/*function getNumber(obj){

var arr=[];

for (var i = 0; i < obj.length; i ) {

if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){

arr.push(obj.charAt(i));

}

}

return arr;

};*/

function getNumber(obj){

var arr=[];

var temp='';

for (var i = 0; i < obj.length; i ) {

if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){

temp =obj.charAt(i);//现将相邻的数字连接起来

}

else{ //每当连接的数字断开时,就在这执行

if (temp) {

arr.push(temp);

temp='';

}

};

}

if (temp) { //这里的作用是为了显示最后数字的,原因不想解释

arr.push(temp);

temp='';

}

return arr;

};

function getNumber2(obj){

var arr=[];

var re=/d /g;

arr.push(obj.match(re));

return arr;

};

console.log(getNumber(str));

console.log(getNumber2(str));

};

</script>

<body>

</body>

</html>

  从上面的例子我们可以看出来,正则表达式的方法有着同样的效果,但是代码更加简短,更加高效,这就是正则的好处啊

  正则是为了更高效的处理字符串而产生的,和字符串处理方法一样,只是更加高效、简洁(正则只可以处理字符串)

  下面我们来系统的学习一下,正则的几个常用的方法:

  在这之前说一下正则的写法,正则和其他对象array()、object()、Date()等都一样,都有初始化的方式

  var re=/这里面要写匹配的东西,不写的话就是注视符号了/; //这样的就是正则对象的简单创建,后面文章我都是直接用它来代替的

  var re=new RegExp(); //这样的创建方式也可以的,大家懂得,只是和简写不同的是参数传递有点不一样

  (1)test

  含义:正则去匹配字符串,当匹配成功返回true,反之,返回false;

  语法:re.test(字符串);

  先说点转义字符吧 :

  /s空格 /S非空格 /d数字 /D非数字 /w字符(字母、数字、下划线) /W非字符

  举个例子:判断一个字符串是否都是数字

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<!DOCTYPE>

<html>

<head>

<meta charset='utf-8'>

<title></title>

</head>

<script type="text/javascript">

window.onload=function(){

var str='dgh6a567sdo23ujaloo932';

var str2='123456';

function allNumber(obj){

var re=/D/;//定义正则对象匹配非数字,只要有不是数字的就是匹配结束返回结果

if (re.test(obj)) {

alert('不全是数字');

}

else{

alert('全是数字');

};

};

allNumber(str);

allNumber(str2);

 

};

</script>

<body>

</body>

</html>

  (2)search

  含义:正则去匹配字符串,当匹配成功返回匹配成功的位置,反之,返回-1;和字符串处理方法中的indexof()功能一样

  语法:字符串.search(re);

  [color=Red]注意:正则中默认是区分大小写的,要想让其不区分大小写的就是加标识i;[/color]

  例子,不区分大小写的去正则匹配字符串中某个字符

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<!DOCTYPE>

<html>

<head>

<meta charset='utf-8'>

<title></title>

</head>

<script type="text/javascript">

window.onload=function(){

var str='dgh6b567sdo23ujaloo932';

function searchStr(obj){

var re=/B/i;//定义正则对象匹配b字符,不区分大小写

alert(obj.search(re));

};

searchStr(str);

};

</script>

<body>

</body>

</html>

  (3)match

  含义:正则去匹配字符串,当匹配成功返回匹配成功的数组,反之,返回Null

  语法:字符串.match(re);

  [color=Red]注意:正则中默认是只要是匹配成功就立刻结束返回相应的值,不会继续匹配。若想查找全部就需要加表示g(全局匹配)[/color]

  例子:匹配字符串中的连续数字并将其存入一个数组中(连续的数字作为数组用的一项)

  程序中的“ ”是匹配至少出现一次,为什么要这样做呢?

  前面我们提过“正则中默认是只要是匹配成功就立刻结束返回相应的值”,那么在字符串中匹配到一个数字时就会结束,将一个数字返回数组,这时候我们需要的是用g来让它匹配每一个元素。

  有没有发现连续的数字没有确定的个数,用“ ”就可以满足动态的数字个数。

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

<!DOCTYPE>

<html>

<head>

<meta charset='utf-8'>

<title></title>

</head>

<script type="text/javascript">

window.onload=function(){

var str='dgh6b567sdo23ujaloo932';

function searchStr1(obj){

var re=/d/;

return obj.match(re);

};

function searchStr2(obj){

var re=/d/g;

return obj.match(re);

};

function searchStr3(obj){

var re=/dd/g;//全局匹配2位数

return obj.match(re);

};

function searchStr4(obj){

var re=/d /g;

return obj.match(re);

};

console.log(searchStr1(str));

console.log(searchStr2(str));

console.log(searchStr3(str));

console.log(searchStr4(str));

 

};

</script>

<body>

</body>

</html>

  (4)replace

  含义:正则去匹配字符串,当匹配成功的字符串被新的字符串所替代

  语法:字符串.replace(re);

  例子:将字符串中的所有的a都替换成b

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<!DOCTYPE>

<html>

<head>

<meta charset='utf-8'>

<title></title>

</head>

<script type="text/javascript">

window.onload=function(){

var str='daah6b5a7sdo23ujaloo932';

function replaceStr(obj){

var re=/a/g; //全局匹配a

return obj.replace(re,'b');

};

console.log(replaceStr(str));

};

</script>

<body>

</body>

</html>

  暂时写到这里后续跟新。。。

  以上所述就是本文的全部内容了,希望大家能够喜欢。

很长时间没看正则表达式了,碰巧今天用到,温故知新了一把,这里记录下来,分享给大家,都是些基础的...

 

//验证电话号码
public bool IsTelephone(string str_telephone)
{
     return System.Text.RegularExpressions.           
        Regex.IsMatch(str_telephone, @"^(d{3,4}-)?d{6,8}$");
}

//验证密码
public bool IsPassword(string str_password)
{
    return System.Text.RegularExpressions.          
        Regex.IsMatch(str_password, @"[A-Za-z] [0-9]");
}

//验证邮政编码
public bool IsPostalcode(string str_postalcode)
{
    return System.Text.RegularExpressions.
        Regex.IsMatch(str_postalcode, @"^d{6}$");
}

//验证手机号码
public bool IsHandset(string str_handset)
{
    return System.Text.RegularExpressions.Regex.     
        IsMatch(str_handset, @"^[1][3-5]d{9}$");
}

//验证身份证
public bool IsIDcard(string str_idcard)
{
    return System.Text.RegularExpressions.Regex.    
        IsMatch(str_idcard, @"(^d{18}$)|(^d{15}$)");
}

//验证小数格式
public bool IsDecimal(string str_decimal)
{
    return System.Text.RegularExpressions.Regex.     
        IsMatch(str_decimal, @"^[0-9] .[0-9]{2}$");
}

//验证月份
public bool IsMonth(string str_Month)
{
     return System.Text.RegularExpressions.Regex.     
         IsMatch(str_Month, @"^(0?[[1-9]|1[0-2])$");
}

//验证天数
public bool IsDay(string str_day)
{
    return System.Text.RegularExpressions.Regex.  
        IsMatch(str_day, @"^((0?[1-9])|((1|2)[0-9])|30|31)$");
}

//验证是否为数字
public bool IsNumber(string str_number)
{
    return System.Text.RegularExpressions.Regex.    
        IsMatch(str_number, @"^[0-9]*$");
}

//验证密码长度
public bool IsPasswLength(string str_Length)
{
    return System.Text.RegularExpressions.Regex.     
         IsMatch(str_Length, @"^d{6,18}$");
}

//验证正整数
public bool IsIntNumber(string str_intNumber)
{
     return System.Text.RegularExpressions.Regex.     
         IsMatch(str_intNumber, @"^ ?[1-9][0-9]*$");
}

//验证大小写
public bool IsUpChar(string str_UpChar)
{
    return System.Text.RegularExpressions.Regex.     
        IsMatch(str_UpChar, @"^[A-Z] $");
}
public bool IsLowerChar(string str_UpChar)
{
    return System.Text.RegularExpressions.Regex.         
        IsMatch(str_UpChar, @"^[a-z] $");
}

//验证是否为字母
public bool IsLetter(string str_Letter)
{
    return System.Text.RegularExpressions.Regex.    
        IsMatch(str_Letter, @"^[A-Za-z] $");
}

//验证是否为中文
public bool IsChinese(string str_chinese)
{
    return System.Text.RegularExpressions.Regex.     
        IsMatch(str_chinese, @"^[u4e00-u9fa5]{1,}$");
}

//验证邮箱
public bool IsEmail(string str_Email)
{
    return System.Text.RegularExpressions.Regex.IsMatch(str_Email,    
          @"^(([w.] )@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}))|((w .?) )@([a-zA-Z]{2,4}|[0-9]{1,3})(.[a-zA-Z]{2,4}))$");
}

//验证IP
public bool IPCheck(string IP)
{
    string num = @"(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d)";  
        return Regex.IsMatch(IP,          
            ("^"   num   "\."   num   "\."   num   "\."   num   "$"));
}

//验证Url
public bool IsUrl(string str_url)
{
    return System.Text.RegularExpressions.Regex.IsMatch(str_url,    
      @"http(s)?://([w-] .) [w-] (/[w- ./?%&=]*)?");
}

正则表达式在程序设计中有着重要的位置,它经常被用于处理字符串信息,下面是正则常用的一些实例。

  

 

  

本文由时时app平台注册网站发布于编程知识,转载请注明出处:javascript正则表明式功底知识入门,javascript正则表

关键词: