正则表达式(基础、常用)----JavaScript

本文详细介绍正则表达式的常用元字符与限定符,通过实例演示如何进行字符串匹配,包括身份证号、电话号码及电子邮件等常见场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:

表达式作用:匹配字符串。

正则表达式的组成:是由元字符或者这是限定符组成的一个式子。

正则表达式的参考文档:

       https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions

       http://www.runoob.com/jsref/jsref-obj-regexp.html

元字符:

 注意:下面列出的仅为最常用的。

.

表示的是:除了\n以外的任意的一个字符

[]

表示的是范围:

[0-9] 表示0-9中的任意一个数字

[a-z]、[A-Z]、[a-zA-Z]、[0-9a-zA-Z]

另一个意思就是把元字符的意思干掉 [.] 就是表示 “.”

|

或者。 [0-9] | [a-z] 表示的要么是一个数字,要么是一个小写字母

()

分组:([0-9])([1-5])(A-Z) 三组,从左边开始计算

提升优先级: [0-9] | ([a-z]) | [A-Z]  从([a-z])开始算

\d

任意一个数字    相当于[0-9]

\D

任意一个非数字   相当于[^0-9]

\s

任意一个空白字符

\S

任意一个非空白字符

\w

非特殊符号      相当于[0-9a-zA-Z_]

\W

特殊符号        相当于[^0-9a-zA-Z]

\b

单词边界

限定符:

*

表示的是前面的表达式出现了0到多次

[a-z][0-9]*  表示:小写字母中的任意一个 后面是要么是没有数字的,要么是多个数字的    例如:asd123

+

表示的是:前面的表达式出现了一次到多次

[a-z][9]+:  小写字母一个后面最少一个9,或者多个9     asad9bhjk

表示的是:前面的表达式出现了0-1次(最少是0,最多是1)

[4][a-z]?:“1234” “1234h” “1234kjko5”

{}

限定前面的表达式出现的次数

{0,} 前面的表达式出现>=0  相当于:*

{1,} 前面的表达式出现>=1  相当于:+

{0,1} 前面的表达式出现>=0 且 =< 1相当于:

{4} 前面的表达式出现4次

^

表示的是开始,或者是取非(取反)

^[a-z] 以小写字母开头

[^0-9] 取反,非数字

[^a-z] 取反,非小写字母      [^0-9a-zA-Z_] 表示特殊符号

$

表示的是以什么结束

[0-9][a-z]$ 表示必须以小写字母结尾,而且倒数第二个必须是数字

正则表达式案例:

1.    身份证号的匹配

15位或者18位

       ((1-9)[0-9]{14})|((1-9)[0-9]{16}[0-9xX])

       ([1-9][0-9]{14})([0-9]{2}[0-9xX])?

2.    座机号码的正则表达式

    010-19878523        0431-45612396

    [0-9]{3,4}[-][0-9]{8}        \d{3,4}[-]\d{8}

3.    邮箱的正则表达式

        Sd123_3.-df@houb.com.cn

        [0-9a-zA-Z_.-]+[@][0-9a-zA-Z_-]+([.][0-9a-zA-Z]+){1,2}

JS中正则表达式:

修饰符

修饰符用于执行区分大小写和全局匹配:

修饰符

描述

i

执行对大小写不敏感的匹配。

g

执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

m

执行多行匹配。

 

RegExp 对象方法

方法

描述

compile

1.5 版本中已废弃。 编译正则表达式。

exec

检索字符串中指定的值。返回找到的值,并确定其位置。

test

检索字符串中指定的值。返回 true false

toString

返回正则表达式的字符串。

支持正则表达式的 String 对象的方法

方法

描述

FF

IE

search

检索与正则表达式相匹配的值。

1

4

match

找到一个或多个正则表达式的匹配。

1

4

replace

替换与正则表达式匹配的子串。

1

4

split

把字符串分割为字符串数组。

1

4

代码样例:

// 正则表达式中:g 表示的是全局匹配模式
// 正则表达式中:i 表示的忽略大小写

var str1 = "中国移动:10086,中国联通:10010,中国电信:10000";
// 把里面的数字全部提取出来
var array1 = str1.match(/\d{5}/g);
console.log(array1);

// 通过分组提取日
var str2 = "2018-11-11";
var array2 = str2.match(/(\d{4})[-](\d{2})[-](\d{2})/g);
console.log(array2) //["2018-11-11"]
//
使用正则表达式对象.$3
console
.log(RegExp.$3); // 11


//
分解邮箱信息
var email = "wwy456@gmail.com.cn";
var emailinfo = email.match(/(^[0-9a-zA-Z_.-]+)[@]([0-9a-zA-Z_-]+)(([.][a-zA-Z]+){1,2}$)/);
console.log(emailinfo);
console.log(RegExp.$1); // 用户名
console
.log(RegExp.$2); // gmail
console
.log(RegExp.$3); // 域名

/*replace方法*/
var str3=剔除所有  的空格  ";
str3 = str3.replace(/\s+/g,"");
console.log(str3);

// 忽略大小写并全局替换
var str4 = "HHhhppHhH";
str4 = str4.replace(/[h]/ig, "S");
console.log(str4); // SSSSppSSS


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值