目录
  1. 1. JavaScript正则表达式
    1. 1.1. 创建正则表达式的对象
    2. 1.2. 字面量来创建正则表达式
    3. 1.3. 正则表达式的方法
    4. 1.4. 字符串与正则相关的方法与使用
      1. 1.4.1. split()
      2. 1.4.2. search()
      3. 1.4.3. match()
      4. 1.4.4. replace()
    5. 1.5. 正则表达式基本语法
      1. 1.5.1. 量词
      2. 1.5.2. 检查
    6. 1.6. 去除输入中字符串空格
    7. 1.7. 正则检查手机号
    8. 1.8. 正则检查邮箱
JavaScript正则表达式

JavaScript正则表达式

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

创建正则表达式的对象

语法:

  • var 变量 = new RegExp(“正则表达式”,”匹配模式”);
  • 使用typeof检查正则对象,会返回object
  • 在构造函数中可以传递一个匹配模式作为第二个参数
    • i 忽略大小写
    • g 全局匹配模式
var reg = new RegExp("ab","i");//这个正则表达式可以来检查一个字符串中是否含有ab,且忽略大小写

字面量来创建正则表达式

使用字面量的方式创建更加简单,而使用构造函数创建更加灵活

语法:

  • var 变量 = /正则表达式/匹配模式
//构造函数创建
var reg = new RegExp("a","i");
//字面量创建
var reg = /a/i;
//创建一个正则表达式,检查一个字符串中是否有a或b
var reg = /a|b|c/;//使用 | 表示或者的意思\

//创建一个正则表达式检查一个字符串中是否有字母
var reg = /a|b|c|d|e|f|g/;

/*
* []里的内容也是或的关系
* [ab] == a|b
* [a-z] 任意小写字母
* [A-Z] 任意大写字母
* [A-z] 任意字母
* [0-9] 任意数字
*/
reg = /[A-z]/;

//检查一个字符串中是否含有 abc 或 adc 或 aec
var reg = /a[bde]c/;

//检查一个字符串中是否含有除数字意外的字符
var reg = /[^0-9]/;// [^ ] 表示除了

正则表达式的方法

test(),使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false

//这个正则表达式可以来检查一个字符串中是否含有ab,且忽略大小写
var reg = new RegExp("ab","i");
//定义字符串
var str = "a";
var str1 = "aB";
//检查字符串是否符合正则表达式
var result = reg.test(str);
var result1 = reg.test(str1);

console.log(result);
console.log(result1);

字符串与正则相关的方法与使用

split()

  • 可以将一个字符串拆分为一个数组
  • 方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串
  • 这个方法即使不指定全局匹配,也会全都插分
var str = "1a2b3c4d5e6f7";

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

console.log(result);

  • 可以搜索字符串中是否含有指定内容
  • 如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1
  • 它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串
  • serach()只会查找第一个,即使设置全局匹配也没用
var str = "hello abc hello aec afc";

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

console.log(result);

match()

  • 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
  • 默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
    • 我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
    • 可以为一个正则表达式设置多个匹配模式,且顺序无所谓
  • match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
var str = "1a2a3a4a5e6f7A8B9C";

//查找字符串里所有的字母
var result = str.match(/[a-z]/ig); //全局搜索,忽略大小写

console.log(result);

replace()

  • 可以将字符串中指定内容替换为新的内容
  • 参数:
    • 被替换的内容,可以接受一个正则表达式作为参数
    • 新的内容
  • 默认只会替换第一个
var str = "1a2a3a4a5e6f7A8B9C";

//替换字符串里所有的字母为空
var result = str.replace(/[a-z]/gi , ""); //全局搜索,忽略大小写

console.log(result);

正则表达式基本语法

量词

  • 通过量词可以设置一个内容出现的次数
  • 量词只对它前边的一个内容起作用
  • {n} 正好出现n次
  • {m,n} 出现m~n次
  • {m,} m次以上
  • + 至少一个,相当于{1,}
  • * 0个或多个,相当于{0,}
  • ? 0个或1个,相当于{0,1}
//表示连续3个a
var reg = /a{3}/;

//表示连续3个b
var reg = /b{3}/;

//表示3个ab
var reg = /(ab){3}/;

//表示1~3个b
var reg = /b{1,3}/;

//表示3次及以上个b
var reg = /b{3,}/;

//表示至少一个b,相当于{1,}
var reg = /b+/;

//表示0个或多个,相当于{0,}
var reg = /b*/;

//表示0个或1个,相当于{0,1}
var reg = /b?/;

检查

  • 检查一个字符串中是否符合条件,在正则表达式中使用\作为转义字符
  • /^a/表示是否以a开头
  • /a$///表示是否以a结尾
  • /./表示任意字符
  • /\./表示检查小数点
  • /\\/表示检查\
  • /\\\\/表示检查\\
  • /\w/表示任意字母、数字、下划线 [A-z0-9_]
  • /\W/表示除了任意字母、数字、下划线 [A-z0-9_]
  • /\d/表示任意的数字 [0-9]
  • /\D/表示除了任意数字
  • /\s/表示空格
  • /\S/表示除了空格
  • /\b/表示单词边界
  • /\B/表示除了单词边界
//表示是否以a开头
var reg = /^a/; //匹配开头的a

//表示是否以a结尾
var reg = /a$/; //匹配结尾的a

//表示任意字符
var reg = /./;

//表示是否存在小数点
var reg = /\./;

//表示任意字母、数字、下划线 [A-z0-9_]
var reg = /\w/;

//表示除了字母、数字、_ [^A-z0-9_]
var reg = /\W/;

//表示任意的数字 [0-9]
var reg = /\d/;

//表示除了数字
var reg = /\D/;

//表示空格
var reg = /\s/;

//表示除了空格
var reg = /\S/;

//表示单词边界
var reg = /\b/;

//表示除了单词边界
var reg = /\B/;

//创建一个正则表达式检查一个字符串中是否含有单词child
var reg = /\bchild\b/;

去除输入中字符串空格

创建一个正则表达式,用来去除输出字符串中的空格。

去除首位的空格与末尾所有空格,采用""来替换

//接受输入
var str = prompt("请输入你的用户名:");

// /^\s*|\s*$/g 匹配开头和结尾的空格
str = str.replace(/^\s*|\s*$/g,"");

console.log(str);

输入

输出

正则检查手机号

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

手机号的规则:

  • 以1开头
  • 第二位3-9任意数字
  • 三位以后任意数字9个
//定义一个手机号
var phoneStr = "13067890123";
//规定一个正则
var phoneReg = /^1[3-9][0-9]{9}$/;

console.log(phoneReg.test(phoneStr));

正则检查邮箱

创建一个正则表达式,用来检查一个字符串是否是一个合法邮箱

邮箱规则:

  • 任意字母数字下划线 + [.任意字母数字下划线 ]+ @ + 任意字母数字 + .任意字母(2-5位) + [.任意字母(2-5位)]
//定义一个邮箱
var email = "abc.hello@163.com";
//规定一个正则
var emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;

console.log(emailReg.test(email));

文章作者: Jachie Xie
文章链接: https://xjc5772.github.io/2020-02/17/%E5%AD%A6%E4%B9%A0/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0/JS/JavaScript%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XJC&Blog
打赏
  • 微信
  • 支付宝

评论