首页 > 编程语言 >JavaScript正则表达式

JavaScript正则表达式

时间:2024-05-06 10:25:43浏览次数:27  
标签:log 正则表达式 JavaScript var test str 字符串

JavaScript正则表达式

创建正则表达式

使用构造函数

    var 变量 = new RegExp("正则表达式"); // 注意,参数是字符串
var 变量 = new RegExp("正则表达式", "匹配模式"); // 注意,两个参数都是字符串

RegExp的意思是 Regular expression。使用typeof检查正则对象,会返回object。

上面的语法中,既可以传一个参数,也可以传两个参数。

创建了正则表达式的对象后,该怎么使用呢?大致分为两个步骤:

  • (1)创建正则表达式的对象 reg。

  • (2)使用 reg 的test() 方法,判断指定字符串是否符合规则。

正则表达式的test()方法:【重要】

    myReg.test(str); // 判断字符串 str 是否符合 指定的 myReg 这个正则表达式的规则

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

构造函数 RegExp 中,也可以传两个参数。我们可以传递一个匹配模式作为第二个参数。这个参数可以是:

  • i 忽略大小写。这里的 i 指的是 ignore。

  • g 全局匹配模式。这里的 g 指的是 global。


var pattern = new RegExp("h", 'i')// 定义一个正则表达式:检查一个字符串中是否含有 h
var str1 = "Hello"
var str2 = "world"
// 通过 test()方法,判断字符串是否符合 上面定义的 reg 规则
console.log(pattern.test(str1)) // true
console.log(pattern.test(str2)) // false

使用字面量

    var 变量 = /正则表达式/;  // 注意,这个语法里没有引号
var 变量 = /正则表达式/匹配模式; // 注意,这个语法里没有引号

var pattern = /h/i;
var str1 = "Hello"
var str2 = "world"

console.log(pattern.test(str1)) // true
console.log(pattern.test(str2)) // false

总结

以上两种方式都是可以使用的,但是有一下区别

  • 使用构造函数创建时,更加灵活,因为参数中还可以传递变量。

  • 方式二:使用字面量的方式创建,更加简单。

注意

全局匹配 g 慎用test()方法,对于非全局匹配的正则表达式,test()只会检测是否存在某个目标字符串(只要存在就为 true),多次检测的结果都相同

当设置全局标志 /g 时,一旦字符串中还存在匹配,test() 方法都将返回 true,同时匹配成功后将把 lastIndex 属性的值设置为上次匹配成功结果之后的第一个字符所在的位置,下次匹配将从 lastIndex 指示的位置开始;匹配不成功时返回 false,同时将 lastIndex 属性的值重置为 0。

const reg = /test/g;
const str = '_test_test';

console.log(reg.test(str)); // true
console.log(reg.lastIndex); // 5

console.log(reg.test(str)); // true
console.log(reg.lastIndex); // 10

console.log(reg.test(str)); // false
console.log(reg.lastIndex); // 0

正则表达式的使用

规则

下面是正则中常用的一些规则

[]表示:或

  • /[ab]/ 等价于 /a|b/:检查一个字符串中是否包含 a或b

  • /[a-z]/:检查一个字符串那种是否包含任意小写字母

  • /[A-Z]/:任意大写字母

  • /[A-z]/:任意字母

  • /[0-9]/:任意数字

  • /a[bde]c/:检查一个字符串中是否包含 abc 或 adc 或 aec

  • [ab]  字符串中,除了a、b之外,还有没有其他的字符内容?

字符中中的正则

之前我们讲过,在字符串的一些方法中参数是支持正则的

String对象的如下方法,是支持正则表达式的:

方法描述备注
split() 将字符串拆分成数组  
search() 搜索字符串中是否含有指定内容,返回索引 index  
match() 根据正则表达式,从一个字符串中将符合条件的内容提取出来  
replace() 将字符串中的指定内容,替换为新的内容并返回  

split

split():将一个字符串拆分成一个数组。可以接受一个正则表达式作为参数。

var str = "1a2b3c4d5e6f7g";

var result = str.split(/[A-z]/); //
console.log(result);
// [
//     '1', '2', '3',
//     '4', '5', '6',
//     '7', ''
//   ]

search

search():搜索字符串中是否含有指定内容。如果搜索到指定内容,则会返回第一次出现的索引;否则返回-1。

search()方法可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串。serach()只会查找第一个,即使设置全局匹配也没用。

    var str = "hello abc hello aec afc";
/*
* 搜索字符串中是否含有abc 或 aec 或 afc
*/
result = str.search(/a[bef]c/);
console.log(result); // 打印结果:6

match

match():根据正则表达式,从一个字符串中将符合条件的内容提取出来,封装到一个数组中返回(即使只查询到一个结果)。

注意:默认情况下,match()方法只会找到第一个符合要求的内容,找到以后就停止检索。我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容,并以数组的形式返回。

另外,我们可以为一个正则表达式设置多个匹配模式,且匹配模式的顺序无所谓。

代码举例

    var str = "1a2a3a4a5e6f7A8B9C";

var result1 = str.match(/[a-z]/);   // 找到符合要求的第一个内容,然后返回
var result2 = str.match(/[a-z]/g); // 设置为“全局匹配”模式,匹配字符串中 所有的小写字母
var result3 = str.match(/[a-z]/gi); // 设置多个匹配模式,匹配字符串中 所有的字母(忽略大小写)

console.log(result1); // 打印结果:["a"]
console.log(result2); // 打印结果:["a", "a", "a", "a", "e", "f"]
console.log(result3); // 打印结果:["a", "a", "a", "a", "e", "f", "A", "B", "C"]

replace

replace():将字符串中的指定内容,替换为新的内容并返回。不会修改原字符串。

    新的字符串 = str.replace(被替换的内容,新的内容);

参数解释:

  • 被替换的内容:可以接受一个正则表达式作为参数。

  • 新的内容:默认只会替换第一个。如果需要替换全部符合条件的内容,可以设置正则表达式为全局匹配模式。

    var phoneStr = "13067890123";

var phoneReg = /^1[3-9][0-9]{9}$/;

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

标签:log,正则表达式,JavaScript,var,test,str,字符串
From: https://www.cnblogs.com/tianzeng-717/p/18174383

相关文章

  • 精通-Python-正则表达式(全)
    精通Python正则表达式(全)原文:zh.annas-archive.org/md5/3C085EA0447FEC36F167335BDBD4428E译者:飞龙协议:CCBY-NC-SA4.0前言自计算机科学迈出第一步以来,文本处理一直是最重要的话题之一。经过几十年的研究,我们现在拥有了最多才多艺和无处不在的工具之一:正则表达式。验证、......
  • JavaScript--元素偏移量(offset)
    一、offset是什么 1、offset翻译过来就是偏移量,我们使用offset系列相关属性可以动态得到元素的位置(偏移)、大小(元素内容+padding+border);2、获得元素距离带有定位父元素的位置;3、注意:返回的数据都不带单位; offset系列常用属性:element.offsetHeight返回任何一个元素的高......
  • day30-JavaScript(2)
    1、BOM对象BOM:Broswerobjectmodel,即浏览器提供我们开发者在javascript用于操作浏览器的对象。1.1、window对象窗口方法//BOMBrowserobjectmodel浏览器对象模型//js中最大的一个对象.整个浏览器窗口出现的所有东西都是window对象的内容.console.log(window);......
  • typescript仅仅是为了给javascript增加类型而对java的一个仿制吗
    如果是这样,我不直接学习java或者c#就好了吗?(不考虑前端编程这个因素)或者换句话说,typescript跟java在语法语义有什么不同吗?能给编程带来什么帮助吗?带着这个疑问,翻了一下现有的资料,找到typescript官网的一段解释,觉得有点意思,翻出来,供大家参考。https://www.typescriptlang.org/doc......
  • day29-JavaScript(1)
    1、JavaScript的历史1.1、JavaScript的历史JavaScript因为互联网而生,紧随着浏览器的出现而问世。回顾它的历史,就要从浏览器的历史讲起。1990年底,欧洲核能研究组织(CERN)科学家TimBerners-Lee,在全世界最大的电脑网络——互联网的基础上,发明了万维网(WorldWideWeb),从此可以在网......
  • 深入理解正则表达式:从入门到精通
    title:深入理解正则表达式:从入门到精通date:2024/4/3018:37:21updated:2024/4/3018:37:21tags:正则Python文本分析日志挖掘数据清洗模式匹配工具推荐第一章:正则表达式入门介绍正则表达式的基本概念和语法正则表达式是一种用于描述字符串模式的表达式,由普通......
  • JavaScript函数
    JavaScript函数函数就是一些功能或语句的封装。在需要的时候,通过调用的形式,执行这些语句。函数也是一个对象函数定义我们使用function关键字定义函数,中文含义是“函数”、“功能”。可以使用如下方式进行定义。函数声明使用函数声明来创建一个函数。语法:function函数名([形......
  • JavaScript数组
     JavaScript数组数组(Array)是属于内置对象,数组和普通对象的功能类似,都可以用来存储一些值。不同的是:普通对象是使用字符串作为属性名,而数组是使用数字作为索引来操作元素。索引:从0开始的整数就是索引。数组的存储性能比普通对象要好。在实际开发中我们经常使用数组存储......
  • 常见的正则表达式
    一、校验数字的表达式1数字:[1]\(2n位的数字:^\d{n}\)3至少n位的数字:^\d{n,}\(4m-n位的数字:^\d{m,n}\)5零和非零开头的数字:^(0|[1-9][0-9])\(6非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?\)7带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?\(8正......
  • 引爆你的网页乐趣!前端十个令人捧腹的JavaScript整蛊代码。
    愚人节整蛊代码。想要在网页上增添一抹幽默与惊喜吗?或是想给你的朋友一个意想不到的“小惊喜”?那么,这十款简单而有趣的JavaScript前端整蛊代码绝对能满足你的需求!每一个代码都能让你的网页瞬间变得生动有趣。1,抖动页面在线效果演示:张苹果博客模拟页面抖动的动画效果。3秒后......