JS正则表达式

这篇博客详细介绍了JavaScript中正则表达式的使用,包括创建正则对象、验证方式、匹配模式、元字符、字符集合、出现次数、或运算以及常见正则表达式实例。内容涵盖从基础到高级的各种操作,对于理解和应用正则表达式非常有帮助。
摘要由CSDN通过智能技术生成

1、正则表达式的使用三步骤

  • .定义正则表达式对象

  • 定义待校验的字符串

  • 校验

2、创建正则表达式对象

  • 对象形式:

    var reg = new RegExp("正则表达式")
    

    当正则表达式中有"/"时,使用这种形式。

  • 直接量形式:

    var reg = /正则表达式/
    

    一般使用这种声明方式。

3、验证方式

(1)模式验证:校验字符串(str)中是否包含reg字符串

<script language="JavaScript">
    var reg = /abc/;//new RegExp("abc");
    var str = "abcdefg";
    var flag = reg.test(str);//true
    console.log(flag);
</script>

(2)匹配读取:读取字符串中的所有’o’

<script language="JavaScript">
    //g表示全文查找,如果不使用g,则只能找到第一个匹配的内容
    var reg = /o/g;//new RegExp("abc");
    var str = "abcodefgoddotyt";
    var arr = str.match(reg);//(3) ['o', 'o', 'o']
    console.log(arr);
</script>

(3)匹配替换:将字符串中的第一个’o’替换成’_’

<script language="JavaScript">
    var reg = /o/;//new RegExp("abc");
    var str = "abcodefgoddotyt";
    str = str.replace(reg,'_');
    console.log(str);//abc_defgoddotyt
</script>

4、正则表达式的匹配模式

(1)全文查找-g

如果不使用g对正则表达式对象进行修饰,则使用正则表达式进行查找时,仅返回第一个匹配;使用后,返回所有匹配。

<script language="JavaScript">
    //g表示全文匹配,如果不使用g,则只能找到第一个匹配的内容
    var reg = /o/g;//new RegExp("abc");
    var str = "abcodefgoddotyt";
    str = str.replace(reg,'_');
    console.log(str);//abc_defg_dd_tyt
</script>

(2)忽略大小写-i

如果不使用i对正则表达式对象进行修饰,则使用正则表达式进行查找时,区分大小写;使用后,不区分大小写。

<script language="JavaScript">
    var reg = /o/g;//new RegExp("abc");
    var str = "abcodefgOdt";
    str = str.replace(reg,'_');
    console.log(str);//abc_defgOdt
</script>

对比代码:

<script language="JavaScript">
    //g表示全文匹配,如果不使用g,则只能找到第一个匹配的内容
    //i表示忽略大小写匹配
    var reg = /o/gi;//new RegExp("abc");
    var str = "abcodefgOdt";
    str = str.replace(reg,'_');
    console.log(str);//abc_defg_dt
</script>

(3)多行查找-m

不使用多行查找模式m,目标字符串中不管有没有换行符都会被当做一行。

<script language="JavaScript">
    var reg = /hello$/;//$表示以hello结尾
    var str = "hello\nworld";
    var flag = reg.test(str);
    console.log(flag);//false
</script>

对比代码:

<script language="JavaScript">
    var reg = /hello$/m;//$表示以hello结尾
    var str = "hello\nworld";
    var flag = reg.test(str);
    console.log(flag);//true
</script>

gim可以组合使用,不区分先后顺序

如:

var reg = /abc/gim;
var reg = new RegExp("abc",gim)

5、元字符

在正则表达式中被赋予特殊含义的字符,不能被直接当做普通字符使用。如果要匹配元字符本身,需要对元字符进行转义,转义的方式是在元字符前面加上“\”。

(1)常用的元字符

元字符说明
.匹配除换行字符以外的任意字符
\w匹配字母或数字或下划线等价于[a-zA-Z0-9_]
\W匹配任何非单词字符,等价于A-Za-z0-9
\s匹配任意的空白符,包括空格、制表符、换页符等。等价于[\f\n\r\t\v]
\S匹配任何非空白空白符。等价于\f\n\r\t\v
\d匹配数字。等价于[0-9]
\D匹配一个非数字字符。等价于0-9
\b匹配单词的开始或结束
^匹配字符串的开始,但在[]中使用表示取反
$匹配字符串的结束

(2)举例

  • \w
<script language="JavaScript">
    var reg = /\w/gim;//$表示以hello结尾
    var str = "a>b_c|u\nt?h";

    //str = str.replace(reg,"A");
    //console.log(str);//A>AAA|A\nA?A
    var flag = reg.test(str);
    console.log(flag);//true
</script>
  • \W
<script language="JavaScript">
    var reg = /\W/gim;//$表示以hello结尾
    var str = "a>b_c|u\nt?h";

    str = str.replace(reg,"A");
    console.log(str);//aAb_cAuAtAh
</script>
  • \s
<script language="JavaScript">
    var reg = /\s/gim;
    var str = "a>b_c|u\nt?h";

    str = str.replace(reg,"A");
    console.log(str);//a>b_c|uAt?h
</script>
  • \d
<script language="JavaScript">
    var reg = /\d/gim;
    var str = "3>b";

    str = str.replace(reg,"A");
    document.write(str);//A>b
</script>
  • \D
<script language="JavaScript">
    var reg = /\D/gim;
    var str = "3>b";

    str = str.replace(reg,"A");
    document.write(str);//3AA
</script>
  • \b
<script language="JavaScript">
    var reg = /\b/gim;
    var str = "hello world";

    str = str.replace(reg,"A");
    document.write(str);//AhelloA AworldA
</script>
  • ^
<script language="JavaScript">
    var reg = /^a/gim;
    var str = "a hello world b";

    str = str.replace(reg,"A");
    document.write(str);//A hello world b
</script>
  • $
<script language="JavaScript">
    var reg = /b$/gim;
    var str = "a hello world b";

    str = str.replace(reg,"A");
    document.write(str);//a hello world A
</script>

6、字符集合

语法格式示例说明
[字符列表]正则表达式:[abc] 含义:目标字符串包含abc中的任何一个字符 目标字符串:plain 是否匹配:是 原因:plain中的“a”在列表“abc”中目标字符串中的任意一个字符出现在字符列表中就算匹配
[^字符列表]正则表达式:[^abc] 含义:目标字符串包含abc以外的任何一个字符 目标字符串:plain 是否匹配:是 原因:plain中包含“p”、“l”、“i”、“n”匹配字符列表中未包含的任意字符
[字符范围]正则表达式:[a-z] 含义:所有小写英文字母组成的字符列表 正则表达式:[A-Z] 含义:所有大写英文字母组成的字符列表匹配指定范围内的任意字符

举例:

(1)[]表示集合,表示有a或者b或者c都匹配,如果没有[],表示必须精确匹配abc

<script language="JavaScript">
    var reg = /abc/gim;
    var str = "abhelloworldc";

    str = str.replace(reg,"A");
    document.write(str);//abhelloworldc
</script>

对比代码:

<script language="JavaScript">
    var reg = /[abc]/gim;
    var str = "abhelloworldc";

    str = str.replace(reg,"A");
    document.write(str);//AAhelloworldA
</script>

(2)[^]中的“^”表示取反

<script language="JavaScript">
    var reg = /[^abc]/gim;
    var str = "abhelloworldc";

    str = str.replace(reg,"A");
    document.write(str);//abAAAAAAAAAAc
</script>

(3)[ - ]中的“-”表示范围

<script language="JavaScript">
    var reg = /[a-g]/gim;
    var str = "abhelloworldc";

    str = str.replace(reg,"A");
    document.write(str);//AAhAlloworlAA
</script>

7、出现次数

代码说明
*出现零次或多次
+出现一次或多次
出现零次或一次
{n}出现n次
{n,}出现n次或多次
{n,m}出现n到m次

举例:

  • {n}
<script language="JavaScript">
    var reg = /[l]{2}/gim;
    var str = "ablllhelloworldc";

    str = str.replace(reg,"_");
    document.write(str);//ab_lhe_oworldc
</script>
  • {n,m}
<script language="JavaScript">
    var reg = /[l]{2,5}/gim;
    var str = "ablllhelloworldc";

    str = str.replace(reg,"_");
    document.write(str);//ab_he_oworldc
</script>

8、在正则表达式中表达"或者"

使用符号:|

<script language="JavaScript">
    var reg = /a|d/gim;
    var str = "abcdefg";

    str = str.replace(reg,"_");
    document.write(str);//_bc_efg
</script>

9、常用正则表达式

需求正则表达式
用户名/^[a-zA-Z_][a-zA-Z_-0-9]{5,9}$/
密码/^[a-zA-Z0-9_-\@#&*]{6,12}$/
前后空格`/^\s+
电子邮箱/^[a-zA-Z0-9_.-]+@([a-zA-Z0-9-]+[.]{1})+[a-zA-Z]+$/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值