b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

JS正则表达式语法

电脑杂谈  发布时间:2020-03-28 00:04:01  来源:网络整理

js定义正则表达式_js 正则表达式_js正则表达式语法

正则表达式是由普通字符(例如表示特定字符​​或字符集的数字,字母,标点符号和元字符)和特殊字符(用作限定或特殊功能的字符)组成的文本模式.

所有数字,小写字母,大写字母和标点符号都是普通字符.

要匹配上面列出的字符集以内的任何字符,您需要使用元字符. 元字符分为文字字符和字符类.

字符描述

uXXXX

由十六进制数字XXXX指定的Unicode字符

以十六进制数字NN表示的拉丁字符

NUL字符(u0000)

标签(u0009)

换行符(u000A)

“垂直”标签(u000B)

换页(u000C)

回车(u000D)

Character类元字符用于匹配特定范围内的字符. 字符类可以匹配包含的任何字符.

字符描述

除换行符和行尾以外的所有单个字符

相当于[0-9a-zA-Z]

除w以外的所有字符

任何Unicode空格字符

任何非Unicode空格字符(大于w)

相当于[0-9]

除d以外的所有字符

js正则表达式语法_js定义正则表达式_js 正则表达式

[...]

方括号中的任何字符

除方括号中的字符集外的任何字符

当需要匹配多个指定字符时,需要使用一些特殊的特殊字符来表示重复匹配的次数.

字符描述

{n,m}

匹配至少n次,但不超过m次

匹配至少n次,没有限制

匹配n次

匹配0或1次,相当于{0,1}

匹配一次或多次,没有上限,等于{1,}

匹配0次或多次,无上限,等于{0,}

重复的字符需要与普通字符结合使用,例如[a-z] {3,5},它可以匹配3至5个小写字母.

当您需要匹配以指定字符开头或结尾的字符串时,您需要使用定位字符.

字符描述

匹配字符串的开头,在多行搜索中,匹配一行的开头

匹配字符串的末尾,在多行搜索中js定义正则表达式,匹配一行的末尾

(?= p)

零宽前瞻性断言,要求以下字符与p匹配,并且该匹配不包括p

(?! p)

零宽度否定超前断言,要求下一个字符不能匹配p

匹配单词边界(需要与其他表达式一起使用,对于退格字符仅使用[b])

js定义正则表达式_js 正则表达式_js正则表达式语法

匹配非单词边界

示例: 您需要匹配以字母,下划线或$开头的字符串,以验证变量名是否有效.

注意: ^表示方括号[]中的反向匹配.

零宽度先行断言可以使用任何正则表达式作为结束锚点. q(?= p)表示匹配所有以p结尾的q个字符串. 匹配结果仅包含q部分,不包含锚点p.

示例: 要匹配以“. ”结尾的字符串,可以使用/ w +(?=. )/ g

匹配'a.b.c.d.e.f'的结果是['a','b','c','d'js定义正则表达式,'e']. 没有在f之后,因此不匹配.

q(?!p)表示匹配所有不以p结尾的q字符串.

注意: JavaScript不支持后置断言,也就是说,正则表达式不能用作起始锚点.

b可用于匹配单词的开头或结尾. 示例: 使用/ bStr /匹配String中的Str,使用/ ingb /

匹配String中的ining

B可用于匹配单词的中间部分. 示例: 将String中的trin与/ BtrinB /

匹配

字符描述

选择匹配项. “ |”左右两边的表达式可以匹配.

(...)

组匹配,将几个项目组合成一个单元,可以用诸如“ *”,“ +”,“?”,“ |”,“ {n,m}”等符号修改该单元. 并记住与该组合匹配的字符.

(?: ...)

非捕获组,仅负责匹配,不记得与该组匹配的字符

两者之间的区别

(?: ...)和(...)仅存在并匹配结果. 当您需要记录比赛的某个部分时,请使用(...). 如果仅用于匹配,并且以后不需要使用通过分组匹配的字符串,请使用(?: ...)

字符描述

有两种实例化RegExp的方法. 一种由文字实例化,一种由新RegExp()构造函数实例化

js正则表达式语法_js定义正则表达式_js 正则表达式

var exp = / pattern / flags;  //RegExp字面量
var exp = new RegExp("pattern","flags");    //RegExp构造函数

标志用于指示正​​则表达式的行为. 选项为g,i和m,可以同时定义一个或多个.

g: 全局,表示全局模式. 当标志包含g时,表达式匹配所有可以匹配的字符串;如果它不包含g,则匹配第一个字符串时,匹配将停止.

i: 区分大小写,忽略大小写. 如果标志包含i,则表达式匹配时将忽略字符串的大小写.

m: 多行,表示多行匹配. 如果标志包含m,则表达式与文本行的末尾匹配时,它将继续查找下一行是否存在匹配项.

pattern是一个正则表达式语句.

RegExp构造函数的优点是能够动态传递正则表达式.

布尔值,指示是否设置了g标志.

布尔值,指示是否设置了i标志.

布尔值,指示是否设置了m标志.

正则表达式的字符串表示形式,以文字形式返回,而不是以传递给构造函数的字符串模式形式返回.

整数,表示从0开始计算下一个匹配项的字符位置.

示例:

var exp = /\[bc\]at/gi;
exp.global;//true
exp.ignoreCase;//true
exp.multiline;//false
exp.source;//“\[bc\]at”

exec方法接受一个参数,该参数是需要向其应用模式的字符串,然后返回一个数组,其中包含有关第一个匹配项的信息;如果没有匹配项,则返回null. 返回的数组是一个Array实例,但还包含两个附加属性: index和input.

句子解释.

返回一个数组,其中包含有关第一个匹配项的信息;如果没有匹配项,则返回null:

这里有两种情况,一种是全局匹配,另一种是非全局匹配.

在全局模式下执行一次exec()匹配后,再次执行exec()时,匹配将从上一个匹配的最后一位继续. 示例:

var exp = /.at/g
var matches = exp.exec('cat, bat, sat, fat'); //第一次匹配
matches.index => 0
matches.input => 'cat, bat, sat, fat'
matches => ['cat']
exp.lastIndex => 3
matches = exp.exec('cat, bat, sat, fat'); //第二次匹配
matches.index => 5
matches.input => 'cat, bat, sat, fat'
matches => ['bat']
exp.lastIndex => 8
...

在非全局模式下成功执行exec()匹配一次后,再次执行exec()时,匹配将从头重新开始.

var exp = /.at/
var matches = exp.exec('cat, bat, sat, fat'); //第一次匹配
matches.index => 0
matches.input => 'cat, bat, sat, fat'
matches => ['cat']
exp.lastIndex => 0
matches = exp.exec('cat, bat, sat, fat'); //第二次匹配
matches.index => 0
matches.input => 'cat, bat, sat, fat'
matches => ['cat']
exp.lastIndex => 0

js 正则表达式_js定义正则表达式_js正则表达式语法

返回的数组是一个Array实例:

使用(...)组匹配时,一个exec()将匹配多个结果

var exp = /(there)\s+(you)\s+(are)/;
var matches = exp.exec('hey, there you are my dear');
matches = ["there you are", "there", "you", "are"];

matches [0]匹配整个表达式字符串.

matches [1]匹配第一个(...)中的字符串,依此类推.

补充说明: 执行exec后,包含(?: ...)非捕获组的表达式返回的数组不包含(?: ...)匹配的字符串. 非捕获组(?: ...)和捕获组(...)之间的区别在这里.

属性索引和输入:

index表示匹配在字符串中的开始位置.

input代表要应用正则表达式的字符串.

test方法接受参数作为字符串来应用模式,如果模式与参数匹配,则返回true,否则返回false. 当您只想知道目标字符串是否与模式匹配,而又不需要知道其文本内容时,此方法非常方便. 因此,在if语句中经常使用test()方法.

字符串有四种将正则表达式作为参数传递的方法.

str.search(exp)返回str中与exp表达式匹配的第一个字符串的起始位置. 如果找不到匹配项,则返回-1. 如果传递给search的参数是字符串,则将首先通过RegExp构造函数将其转换为正则表达式. 搜索不支持全局搜索,它会忽略全局标志.

'JavaScript'.search(/script/i) => 4

str.replace(exp,replaceStr)第一个参数是正则表达式,第二个参数是要替换的字符串. 如果exp具有全局标识符,则将替换源字符str中与exp表达式匹配的所有子字符串. 如果没有g,则只会替换str中与exp匹配的第一个子字符串.

text.replace(/javascript/gi, 'JS') //将text全文中所有javascript改为JS

如果$加上数字N的字符串出现在replaceStr中,则表示第N个子表达式与文本匹配.

text.replace(/'([^']*)'/g, '"$1"') //将text全文中所有被''引用的子串替换成被""引用。

str.match(exp)返回匹配结果数组.

此数组不同于RegExp实例方法exex()返回的数组. 当存在全局标识符时,match返回一个全局匹配的所有字符串的数组;如果没有全局标识符,则match返回第一个匹配的字符串的单元素数组.

'11+2=13'.match(/\d/g) => ['1','1','2','1','3']
'11+2=13'.match(/\d/) => ['1']

match方法不返回捕获组合匹配的子字符串. (...)分组匹配不会在匹配方法中返回匹配的子字符串,例如RegExp实例方法exec().

当传递给它的参数是正则表达式时,这使split()方法非常强大. 例如,您可以指定一个分隔符并允许任意数量的空白字符:

...↩


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-154712-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...