【JS学习笔记】正则表达式

本文详细介绍了正则表达式的各种符号及其用法,包括符号标记组、全局搜索、多行标志等,通过实例展示了如何使用正则表达式进行字符串操作。

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

1,符号标记组一

  • ^:位于字符串开头,表示非
  • $:位于字符串结束,正则分组(),$1
  • b:匹配单词分界位置
  • B:匹配非单词分界位置

2,符号标记组二

  • G、g:全局搜索
  • I、i:不区分大小写
  • M、m:多行标志

3,符号标记组三

  • \d:0~9任意数字
  • \D:任何非数字字符
  • \w:任何单词字符,即A~Z,a~z,0~9以及下划线_
  • \W:任何非单词字符
  • \s:任何空白字符
  • \S:任何非空白字符
  • .:除换行符(\n)外任意单个字符
  • […]:匹配位于方括号内任意一个字符
  • [^…]:匹配除了方括号内的字符以外任何字符

4,符号标记组四

  • {n}:出现了n次
  • {n,}:出现了n次,及以上次数
  • {n,m}:出现了n-m次
  • ?:出现了0或1次
  • +:出现了1次或多次
  • *:出现了0次或多次

5,符号标记组五

  • ?: :可选非捕获型分组

在js中,正常的捕获分组格式是(XX),非捕获分组格式为(?:XX)。

var str = "a1***ab1cd2***c2";
var reg1 = /((ab)+\d+)((cd)+\d+)/i;
var reg2 = /((?:ab)+\d+)((?:cd)+\d+)/i;
alert(str.match(reg1));//ab1cd2,ab1,ab,cd2,cd
alert(str.match(reg2));//ab1cd2,ab1,cd2

非捕获分组,只是用来匹配,并不会提取分组内容。也就是说,如果我们只想用圆括号将一些字符用数量词修饰,并不需要这个分组的内容,这就是非捕获分组。

------------------------------------------------------------------------------

使用RegExp对象构造函数

var myRegExp = new RegExp ("\\b");

需要多加一个反斜杠。

例子:

1,在数字前面添加字符串

输出结果:

    var myString1 = "2012,2013,2014";
    var theRegExp = /(\d{4})/g; //()分组标记$1
    var myString1 = myString1.replace(theRegExp, "the year $1");
    document.write(myString1);

2,确定分界符-

var myStringList = "apple, 0.2, banana, 0.5, orange, 0.1, peach, 0.21";
    var theRegExp = /[^a-z]+/i;
    var myFruitArray = myStringList.split(theRegExp);
    document.write(myFruitArray.join("<br />"));

以非字母的区域作为分界,不区分大小写 = /[^a-z]+/i

3,拆分html

var html = "<h2>Java Script!</h2>" +
        "<p> we love javascript!</p>";
    var regexp = /<[^>\r\n]+>|[^<>\r\n]+/g;
    var results = html.match(regexp);

    document.write(results.join("\r\n"));

输出结果应该是:

<h2>

Java Script!

</h2>

……

结果答案自动识别了<h2><p>,输出为

4,表单验证模块

4-1 验证网站

var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
var url = "http://www.ora.com:80/goodparts?q#fragment";

var result = parse_url.exec(url);

常见的匹配

学习自:https://www.w3cschool.cn/regexp/1ngu1pqi.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值