js基础 - 正则表达式的详细介绍以及电子邮件、手机号码的格式举例

正则表达式

  1. 什么是正则表达式
  2. 正则表达式的创建
  3. 正则表达式的语法
  4. 字符串结合正则表达式的使用(重点)
  5. 电子邮箱和手机号码的格式测试


一、什么是正则表达式

正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,获取将字符串中符合规则的内容提取出来。


二、正则表达式的创建

①创建正则表达式的对象:

      语法: var 变量  = new RegExp("正则表达式" , ["匹配模式"]);

②以字面量来创建正则表达式:

     语法:var reg=/正则表达式/[匹配模式];

匹配模式:

  • i 忽略大小写
  • g 全局匹配模式
var str1="hello world";
var str2="abcde";
var str3="A";

//创建正则表达式
var reg  = new RegExp("a","i"); 
//或者var reg = /a/i;
document.write(reg);         //返回/a/
document.write(typeof reg);  //返回object

// 正则表达式的方法reg.test()
result = reg.test(str1);      //返回false
document.write(result);
result = reg.test(str2);      //返回true
document.write(result);
result = reg.test(str3);      //返回true
document.write(result);

三、正则表达式的语法

/*基础

  • /x/                 存在x
  • []里的内容是或的关系
  • [ab] == a|b
  • [a-z]              任意小写字母
  • [A-Z]             任意大写字母
  • [A-z]             任意字母
  • [^]                 除了^后面的内容
  • [0-9]              任意数字
  • [a-b]              数字a到数字b之间的任意数字 
  • ......

*/

var reg = "";
reg = /a/        //存在a
reg = /a|b/;     //a或b
reg = /[ab]/;    //a或b
reg = /[a-z]/;   //任意小写字母
reg = /[A-Z]/;   //任意大写字母
reg = /[A-z]/;   //任意字母
reg = /[0-9]/;   //任意数字
reg = /[^ab]/;   // 除了^后面的内容

/*量词

  • a{n}                a正好出现n次
  • (ab){n}            ab正好出现n次
  • ax{n}b             a和b之间的x存在不止n次 
  • ac{x,y}b           a和b之间的c出现x到y次,包括x和y 
  • ac{x,}b             a和b之间的c出现至少x次,包括x 
  • ac+b                 +代表至少出现一个,a和b之家的c至少出现一次
  • ac*b                  *代表出现0或多个 [零,正无穷]
  • ac?b                  ?代表出现0或1次 [0,1] 
  • ^a                       ^表示开头,检查字符串是否以a开头
  • a$                       $表示结尾,检查字符串是否以a结尾
  •  ^a$                     a即是开头,也是结尾 (正则表达式中同时使用^$则要求字符串必须完全符合正则表达式)
  • ^a|a$                   以a开头或以a结尾

*/

var reg="";

reg = /a{n}/             //a正好出现n次
reg = /(ab){n}/          //ab正好出现n次
reg = /ax{n}b/           //a和b之间的x存在不止n次 
reg = /ac{x,y}b/         //a和b之间的c出现x到y次,包括x和y  
reg = /ac{x,}b/          //a和b之间的c出现至少x次,包括x 
reg = /ac+b/             //+代表至少出现一个,a和b之家的c至少出现一次
reg = /ac*b/             //*代表出现0或多个 [零,正无穷]
reg = /ac?b/             //?代表出现0或1次 [0,1] 
reg = /^a/               //^表示开头,检查字符串是否以a开头
reg = /a$/               //$表示结尾,检查字符串是否以a结尾
reg = /^a$/              //a即是开头,也是结尾
reg = /^a|a$/            // 以a开头或以a结尾
reg = /^a|a$/            //以a开头或以a结尾

  例:创建一个正则表达式,检查一个字符串是否是一个合法手机号

     ---手机号规则:

         -1  3-9  123456789  一共11位数字 

                      -1、以1开头

                      - 2、第二位为3-9任意数字

                      -3、三位以后任意数字9个

         伪代码:^1   [3-9]   [0-9]{9}$

var reg = /^a[3-9][0-9]{9}$/;

alert(reg.test("13920325468"));

/*检查字符串是否含有.

      .在正则表达式中表示任意字符

      在正则表达式中使用\作为转义字符

      \\表示\

      \.表示.

  • .             任意字符
  • /\./          含有.

      注意:正则表达式的构造函数的参数是字符串,要想使用\,则需对其转义\\后,才能输出\\.

*/

var reg1 = /\./;     //含有.
var reg2 = new RegExp("/\\./");

alert(reg1.test("sa.21xas"));
alert(reg2.test("sa21xas"));

/*元符号

      -    拥有特殊含义的字符

  • \w              - 任意字母、数字和下划线_                          - [A-z0-9_]
  • \W             - 除了字母、数字和下划线之外的字符          - [^A-z0-9_]
  • \d               - 任意的数字                                                 - [0-9]
  • \D              - 除了数字                                                     -[^0-9]
  • \s               - 空格                                                            -  
  • \S              - 除了空格                                                     - 
  • \b               - 单词边界 \b单词\b                                      -
  • \B               - 除了单词边界                                             - 
		var w = /\w/;
		var W = /\W/;
		var d = /\d/;
		var D = /\D/;
		var s = /\s/;
		var S = /\S/;
		var b = /\bword\b/;
		var B = /\Bword\B/;

例:取名字,自动去除空格

1、去除开头和结尾的空格

		var str = prompt("请输入名字:");

		//去除开头的空格
		result = str.replace(/^\s*/ , "");
		//去除结尾的空格
		result = str.replace(/\s*$/,"");
		//合并 去除结尾和开头的空格
		result = str.replace(/^\s*|\s*$/g,"");

		//测试结果是否相同
		alert(result == str);

2、去除所有空格

		var str = prompt("请输入名字:");

		//去除所有空格
		result = str.replace(/\s/g , "");

		//测试结果是否相同
		alert(result == str);

四、字符串结合正则表达式的使用(重点)

支持正则表达式的String对象方法(字符串)

  1. split()
  2. search()
  3. match()
  4. replace()

 

1、split()方法

          -        该方法将一个字符串拆分成一个数组

          -        方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串

          -         不需要设置全局匹配g,也会全部都拆分

例:根据任意字母拆分字符串

var str = "1a2b3c4d5e";
var result = str.split(/[A-z]/);  //根据任意字母拆分字符串

document.write(result);

2、search()方法

          -        可以搜索字符串中是否含有指定内容,有则返回指定内容的第一个值的索引值,无则返回-1

          -        可以接受一个正则表达式作为参数,根据正则表达式去检索字符串

          -        全局匹配g对该方法无效,只会返回第一个结果

例:搜索字符串中是否含有abc或aec或afc

var str = "avc aec dcs dsf";
result = str.search(/a[bef]c/);  //搜索字符串中是否含有abc或aec或afc

document.write(result);

3、match()方法(可用于爬取信息)

          -        可以根据正则表达式,从一个字符串中将符合条件的内容提取出来,将结果保存在数组里

          -        默认情况下match只会找到第一个符合要求的内容,找到就停止检索

          -        设置正则表达式为全局匹配模式g,就会匹配所有的内容

例:提取字符串中的所有字母

var str = "1a2b3c4d5e6fg";
result = str.match(/[A-z]/);    //提取字符串中的第一个字母
result = str.match(/[A-z]/g);   //提取字符串中的所有字母

document.write(result);    

4、replace()方法

          -        可以将字符串中指定内容替换为新的内容,默认只会替换符合要求的第一个

          -        replace(a,b)  参数a->被替换内容,参数b->新内容

例:替换字符串中的所有a为@

var str = "1aadacafdfwfcsdve2134fsdasfwe";
result = str.replace(/a/,"@");   //只有第一个a被替换
result = str.replace(/a/g,"@");  //所有a被替换

document.write(result);

五、电子邮箱和手机号码的格式测试

正则表达式 电子邮箱和手机号码的格式测试https://blog.youkuaiyun.com/qq_41604269/article/details/83576875

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值