博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript-正则表达式
阅读量:6251 次
发布时间:2019-06-22

本文共 5311 字,大约阅读时间需要 17 分钟。

1.创建方式

构造函数创建

var str = 'hello world';var reg1 = new RegExp('e','ig')console.log(reg1)参数1 正则表达式(不能有空格)参数2 匹配模式:常用g(全局匹配;找到所有匹配,而不是第一个匹配后停止)和 i(忽略大小写)

字面量方式创建

var reg2 = /o/gi;        检测字符o,不区分大小写,全局匹配

 

2.方法

test()

检测字符串中是否包含定义字符模式

console.log(reg1.test(str));

exec()

检索字符串中指定的值。匹配成功返回一个数组,匹配失败返回null

console.log(reg1.exec(str));
["o", index: 0, input: "oweb", groups: undefined]
第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本(如果有的话),            第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话),以此类推。除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string。

match()

在字符串内检索指定的值,匹配成功返回存放匹配结果的数组,否则返回null

console.log(str.match(reg1));

search()

在字符串内检索指定的值,匹配成功返回第一个匹配成功的字符串片段开始的位置,否则返回-1.

var reg = /javascript/i;console.log('hello Javascript Javascript Javascript'.search(reg));     //6

replace()

替换与正则表达式匹配的字串,并返回替换后的字符串。在不设置全局匹配g的时候,只替换第一个匹配成功的字符串片段。

var reg1=/javascript/i; var reg2=/javascript/ig;console.log('hello Javascript Javascript Javascript'.replace(reg1,'js'));//hello js Javascript Javascriptconsole.log('hello Javascript Javascript Javascript'.replace(reg2,'js'));//hello js js js

split()

把一个字符串分割成字符串数组

var reg1 = /cr/i;   console.log('hello Javascript'.split(reg1));   // ["hello Javas", "ipt"]

 

3.元字符(匹配的规则)

单个字符和数字

  • .

匹配除换行符意外的任意字符

var str = "oweb";    var reg = /./g;    console.log(reg.exec(str));// ["o", index: 0, input: "oweb", groups: undefined]    var str2 = "www.baidu.com";    var reg2 = /www\......\.com/g;    console.log(reg2.exec(str2));//["www.baidu.com", index: 0, input: "www.baidu.com", groups: undefined]
  • [ ]

匹配[ ]里面的任意一个字符

var str = "4awebadsads";    var reg1 = /[a-zA-Z0-9]/g;    console.log(str.match(reg1));// (11) ["4", "a", "w", "e", "b", "a", "d", "s", "a", "d", "s"]    var str2 = "1s34";    var reg2 = /[0-9][0-9][0-9]/;    // 匹配连续三个都是数字    console.log(reg2.exec(str2));// null
  • [^]

所有不在这个范围内的字符

var str = "abd";    var reg = /[^a-z]/g;    console.log(reg.exec(str));//null
  • \d 和 \D
var str4 = "web";    var reg4 = /\d/g; //匹配数字    var reg5 = /\D/g; //非数字    console.log(reg4.exec(str4)); //null    console.log(reg5.exec(str4)); //w
  • \w 和 \W
var reg6 = /\w/g; //匹配数字 字母 下划线_ var reg7 = /\W/g; //匹配除数字 字母 下划线以外的任意字符console.log(reg6.exec(str4)); //wconsole.log(reg7.exec(str4)); //null
  • \s 和 \S
var reg8 = /\s/g; //空格 var reg9 = /\S/g; //非空白字符console.log(reg8.exec(str4)); //nullconsole.log(reg9.exec(str4)); //w
  • ^

以什么开头

var str = "www."; var reg10 = /^www/g; // ^字符console.log(reg10.exec(str));//["www", index: 0, input: "www.", groups: undefined]
  • $

以什么结尾

var reg11 = /www\.$/g; //字符$ console.log(reg11.exec(str));//["www.", index: 0, input: "www.", groups: undefined]

重复的字符

匹配前面的字符0个或1个

var strs = "webr44546ere";    var reg12 = /[0-9]?/g;    console.log(reg12.exec(strs));//["", index: 0, input: "webr44546ere", groups: undefined]     非贪婪模式
  • *

匹配0个或任意多个字符 --- 贪婪匹配

var reg13 = /[a-z]*/g; //匹配小写字母,0个或多个    console.log(reg13.exec(strs));// ["webr", index: 0, input: "webr44546ere", groups: undefined]
  • +

至少匹配一次

var reg14 = /\d+/g;    console.log(reg14.exec(strs));//["44546", index: 4, input: "webr44546ere", groups: undefined]
  • {}

{10}:匹配连续的10个字符

var stra = "11274567800";    var rega = /^1\d{
10}$/g; //匹配连续的10个数字 console.log(rega.exec(stra));//["11274567800", index: 0, input: "11274567800", groups: undefined]

{1, 4}:最少1个 最多4个    --- 贪婪模式

var strb = "edg";    var regb = /^[a-zA-z]{
2,3}$/g; console.log(regb.exec(strb));//["edg", index: 0, input: "edg", groups: undefined]
  • ||

或者

var strc = "www.google";    var regc = /www.baidu|google|ujiuye/g;    console.log(regc.exec(strc));//["google", index: 4, input: "www.google", groups: undefined]
  • ()

分组

var strc = "www.google";    var regc = /www.(baidu)|(google)|(ujiuye)/g;    console.log(regc.exec(strc));// ["google", undefined, "google", undefined, index: 4, input: "www.google", groups: undefined]

 

 

相关练习:

1.检索字符串中是否不包含字母

var reg = /[a-z]/ig;    var str1 = 99;    var str2 = "8u999";    console.log(reg.test(str1));    //false    console.log(reg.test(str2));    //true

2.去除字符串首尾空格

var reg = /\s/g;    var str = 'hello world';    console.log(str.replace(reg, ''));// helloworld

3.检查用户账号

function checkUser(str) {        var re = /^[a-zA-z]\w{
3,15}$/; if(re.test(str)) { console.log("正确"); } else { console.log("错误"); } } checkUser("alex_hah"); //调用//正确

4.匹配11位手机号码

function checkPhone(num) {        var reg = /^1\d{
10}$/g if (reg.test(num)){ console.log('正确'); }else{ console.log('错误'); } } checkPhone(13192611098)//正确

5.匹配电话号码

验证规则:区号加号码,区号以0开头,3位或者4位

号码由7位或8位数字组成,区号与号码之间可以无连接符,也可以"-"连接

function checkPhone(num) {        var reg = /^0\d{
2,3}-?\d{
7,8}$/; if(reg.test(num)){ console.log("正确"); }else{ console.log("错误"); } } checkPhone("095-57777777"); //调用// 正确

6.验证邮箱

验证:把邮箱地址分成" 第一部分@第二部分 " 这样,第一部分:由字母、数字、下划线、短线"-"、点号“.”组成;

第二部分:为一个域名,域名由字母、数字、短线"-"、域名后缀组成。

// 而域名后缀一般为.xxx或.xxx.xx, 一区的域名后缀一般为2 - 4 位, 如cn, com, net, 现在域名有的也会大于4位 

function checkEmail(str) {        var re = /^(\w-*\.*)+@(\w-?)+(\.\w{
2,})+$/ ; if(re.test(str)) { console.log("正确"); } else { console.log("错误"); } } checkEmail("alex@cnblogs.cn"); //调用// 正确

 

转载于:https://www.cnblogs.com/Xuuuuuu/p/10507262.html

你可能感兴趣的文章
判断一个程序是c++编译还是c编译
查看>>
(20120722)(笔记001)android开发基础
查看>>
window.opener=null 不需确认就能关闭窗口
查看>>
Spring4-松耦合实例
查看>>
封装方法实现react更新元素示例
查看>>
windows 2003 IIS 配置支持 CGI
查看>>
mysql 多线程写入后查询丢失数据的一个bug
查看>>
SQLIOSim 模拟SQLServer的行为来测试IO性能
查看>>
更改activity组件切换的动画
查看>>
周鸿祎在360新员工入职培训上的讲话
查看>>
网页基础编程第十章
查看>>
centos7 命令行版本 安装 teamviewer
查看>>
修复XP注册表文件system损坏故障
查看>>
每周一书
查看>>
Java代码规范那些事
查看>>
我的友情链接
查看>>
如何更好地对齐分区??
查看>>
使用Python从rds上下载mysql备份文件
查看>>
react native组件的创建
查看>>
批量删除文件
查看>>