美文网首页
正则表达式(字符串应用)

正则表达式(字符串应用)

作者: jasmine_6aa1 | 来源:发表于2020-04-24 15:17 被阅读0次

正则表达式(regular expression):描述字符串匹配的模式(pattern),能实现非常复杂的文本查找替换操作。

1,为什么使用?

正则表达式用简短的代码,能实现非常复杂的文本查找替换操作;用字符串的api来实现同样的功能。

2,创建正则表达式的两种方式

// 方法一:
/匹配模式/。 如 /box/。

// 方法二:
new RegExp(匹配模式字符串)。 如 new RegExp('box')

区别:方法二支持传入变量

3,常见字符类型的匹配方式如下:

  • .: 匹配一个任意字符。
  • \d: 匹配一个数字。
  • \D: 匹配一个非数字字符。
  • [a-z]: 匹配一个小写字母。
  • [0-9]: 匹配所有的数字
  • [A-Z]: 匹配一个大写字母。
  • [\u4e00-\u9fa5]: 匹配一个中文字。
  • \w: 匹配字母、数字、下划线。等价于[A-Za-z0-9_]。
  • \s: 匹配任何空白字符,包括空格、制表符、换页符等等。
  • \S: 匹配任何非空白字符。
  • \\: 匹配\。

4,匹配的模式

注:不写g,那么默认为非全局匹配

g :全局匹配,即全局查找
i :对大小写不敏感的匹配
m : 多行匹配

5,正则表达式常见的方法

  • 配置
var  str = 'This is a text box, that is a check box.'
var reg = /box/;
var regG = /box/g;

1,匹配

  • RegExpObject.test(string):用于检测一个字符串是否匹配某个模式;匹配的值返回 true ,否则返回 false。
    string:必填,需要检测的字符串
/box/.test('This is a text box.') // 返回true
/box/.test('This is a text title.') // 返回 false
  • string.search(regexp/substr):用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1
    注:regexp/substr:必须,查找的正则表达式或者字符串
// 正则查询
str.search(regG) // 16 获取文本中第一个box首字母的索引值位置
str.search(reg) // 16 这里不管匹不匹配 `g`,返回结果都一样

// 字符串查询
str.search('box') // 16 获取文本中第一个box首字母的索引值位置

2,提取
1,RegExpObject.exec(string):方法用于检索字符串中的正则表达式的匹配;提取一个内容
string:必需;要检索的字符串;exec()只返回一个匹配的结果

exec() 方法 — 案例

// 只返回第一个匹配的数组
var content = reg.exec(str);// [{0: "box", groups: undefined, index: 15, input: "This is a text box, that is a check box", length: 1}]

// 全局搜索
// 想返回几个,就调用几次,如果没有了,返回值为 null,所以这里写一个循环比较方便
do {
    var content = regG.exec(str)
    if (content) {
        console.log(content[0])
    }
 } while (content)

2,stringObject.match(regexp/substr):在字符串内检索指定的值,或找到一个或多个正则表达式的匹配;返回值是一个数组,没查询到返回 null;提取多个内容
注:regexp/substr:必须,查找的正则表达式或者字符串

match() 方法 — 案例

// 正则表达式用法 — 对象
str.match(regG) ;//  ["box", "box"]
str.match(reg) ;// {0: "box", groups: undefined, index: 15, input: "This is a text box, that is a check box", length: 1}  默认返回第一个查询到值的对象
str.match(/boxs/);  // null

// 正则表达式用法 — 字符串
str.match(‘box’); // {0: "box", groups: undefined, index: 15, input: "This is a text box, that is a check box", length: 1}  默认返回第一个查询到值的对象

3,替换
stringObject.replace(regexp,replacement):在字符串中用一些字符替换替换一个与正则表达式匹配的子串;返回一个新的字符串

  • regexp/substr:必须,规定子字符串或要替换的模式的 RegExp 对象
  • replacement:必须。一个字符串值。规定了替换文本或生成替换文本的函数
var str =' This is a text box, that is a check box.'

正则表达式:全局替换 与 非全局替换
str.replace(/box/g, 'button');//  " This is a text button, that is a check button."
str.replace(/box/, 'button');// " This is a text button, that is a check box."

字符串替换
str.replace('box', 'button');// " This is a text button, that is a check box."

4,切割
stringObject.split(substr,howmany):在字符串中用一些字符替换另一些字符;返回一个新的数组

  • substr:必须,规定子字符串或要替换的模式的 RegExp 对象。
  • howmany:可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
// 字符串
str.split( ' ', 5); // ["This", "is", "a", "text", "box,"]
str.split( '', 5);  // ["T", "h", "i", "s", " "]

// 将分割结构更为复杂的字符串
"|a|b|c".split("|") //将返回["", "a", "b", "c"]

6,匹配文本以...开始和以...结尾

查找文本是否以字母开头,以数字结尾。代码实现如下:

/^[a-zA-Z].*\d$/.test('ab1') // true

^用来匹配输入字符串的开始位置。$用来匹配输入字符串的结束位置。

7,匹配重复

/aaaaa/.test('aaaaa') // true
/a{5}/.test('aaaaa') // true

/(138|159)/.test('138') // true
/(138|159)/.test('159') // true

重复字符的匹配方式如下:

  • *: 匹配前面的子表达式零次或多次。
  • +: 匹配前面的子表达式一次或多次。
  • ?: 匹配前面的子表达式零次或一次。
  • {n}: 匹配前面的子表达式确定的 n 次。
  • {n,}: 匹配前面的子表达式至少 n 次。
  • {n,m}: 匹配前面的子表达式 n 到 m之间。

8,贪婪模式与非贪婪模式

这里不做详细介绍

// 贪婪模式
/<.+>/

// 非贪婪模式,在贪婪模式后面加一个 ?
/<.+?>/

相关文章

  • 改进正则表达式的性能

    正则表达式的应用原理 正则表达式应用到目标字符串的过程大致分为下面几步: 编译正则表达式。检查正则表达式的正确性,...

  • 正则表达式(W3C笔记)

    通过使用正则表达式,可以: 测试字符串中的模式 替换文本 基于模式匹配从字符串中提取子字符串 正则表达式的应用领域...

  • Java基础之正则表达式

    什么是正则表达式 简单来说,正则表达式就是一种规范,用于字符串匹配,查找,替换 正则表达式的应用场景 在平时的编程...

  • 转 : 正则表达式在IOS中的应用及IOS中三种正则表达式的使

    正则表达式在ios中应用 一、什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式。正则表达...

  • python正则表达式

    python正则表达式 概念:对字符串的一种逻辑公式, 使用规则从原字符串中提取想要的字符串 应用场景:表单验证,...

  • RegExp实例

    exec() 方法用于检索字符串中的正则表达式的匹配。 exec()接受一个参数,既要应用模式的字符串,然后返回包...

  • 正则表达式

    正则表达式应用场景:1.在IDE中使用正则表达式处理规则复杂的字符串查找、替换需求2.在JavaScript程序设...

  • 预习笔记day13(正则表达式的介绍以及基本正则表达式集合)

    1.正则表达式于三剑客知识应用实践 1.1正则表达式介绍: 正则表达式就是为处理大量的字符串及文本而定义的一套规则...

  • day15正则表达式

    正则表达式符号 正则表达式符号组合 模块方法 compile:(正则字符串) 将正则表达式字符串转换成正则表达式对...

  • Python基础总结17(正则表达式)

    1、正则表达式相关语法 正则表达式是用匹配或描述字符串的工具,就是一个字符串,字符串中是正则表达式写法:r'字符串...

网友评论

      本文标题:正则表达式(字符串应用)

      本文链接:https://www.haomeiwen.com/subject/vuyxwhtx.html