欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript正則表達(dá)式及其方法詳細(xì)介紹

 更新時(shí)間:2025年05月28日 10:47:06   作者:??小月亮  
正則表達(dá)式是一種強(qiáng)大的文本處理工具,主要用于在字符串中進(jìn)行模式匹配、數(shù)據(jù)驗(yàn)證和文本替換,這篇文章主要給大家介紹了關(guān)于JavaScript正則表達(dá)式及其方法的詳細(xì)介紹,需要的朋友可以參考下

一、正則表達(dá)式的介紹:

1、含義:

正則表達(dá)式用來(lái)定義一個(gè)規(guī)則,是Js中的一個(gè)對(duì)象。

2、作用:

① 計(jì)算機(jī)可以檢查一個(gè)字符串是否符合規(guī)則

② 將字符串中符合規(guī)則的內(nèi)容進(jìn)行提取

二、正則表達(dá)式的創(chuàng)建:

1、 通過(guò)構(gòu)造函數(shù)創(chuàng)建:new RegExp(規(guī)則, 標(biāo)識(shí))

① 標(biāo)識(shí) / 匹配模式:

(1)匹配模式的數(shù)據(jù)類型:字符串

(2)匹配模式取值:

i:忽略大小寫g:全局匹配模式

var reg = new RegExp('a','i');
consoole.log(reg)  // /a/i

② 使用場(chǎng)景:動(dòng)態(tài)創(chuàng)建規(guī)則

③ 注意事項(xiàng):

當(dāng)使用轉(zhuǎn)義字符(\)的時(shí)候,需要寫兩個(gè) \\

var reg = new RegExp('\\w','i');
consoole.log(reg)  // /\w/i

2、 字面量創(chuàng)建:var 變量 = /規(guī)則/標(biāo)識(shí)

var reg = /a/i ;
consoole.log(reg)  // /a/i

三、正則表達(dá)式的語(yǔ)法:

1、 或 的表示:

① | :表示整體的或

// 匹配ab或c或de的字符串
let reg = /ab|c|de/;
let str = 'c'
let result = reg.test(str)
console.log(result) // true

② [] :表示字符集 – 只要有某個(gè)字符就行

// 匹配任意包含a或b或c或d的字符串
let reg = /[abcd]/;
let str = 'cd'
let result = reg.test(str)
console.log(result) // true

2、 任意的小寫字母:

① [a-z]:

// 匹配任意包含a到z之間的內(nèi)容
let reg = /[a-z]/;
let str = 'c'
let result = reg.test(str)
console.log(result) // true

② /[a-z]/i:

// 匹配任意忽略大小寫的包含a到z之間的內(nèi)容
let reg = /[a-z]/i;
let str = 'H'
let result = reg.test(str)
console.log(result) // true

2、 任意的大寫字母:

① [A-Z]:

// 匹配任意包含A到Z之間的內(nèi)容
let reg = /[A-Z]/;
let str = 'c'
let result = reg.test(str)
console.log(result) // false

② /[A-Z]/i:

// 匹配任意忽略大小寫的包含A到Z之間的內(nèi)容
let reg = /[A-Z]/i;
let str = 'c'
let result = reg.test(str)
console.log(result) // true

3、 任意字母:[a-zA-Z]

// 匹配任意字母
let reg = /[a-zA-Z]/;
let str = 'cfff'
let result = reg.test(str)
console.log(result) // true

4、任意數(shù)字:

① [0-9]:

// 匹配任意數(shù)字
let reg = /[0-9]/;
let str = '123'
let result = reg.test(str)
console.log(result) // true

② \d:

// 匹配任意除了0到9之外的內(nèi)容
let reg = /\d/;
let str = 'cd123d'
let result = reg.test(str)
console.log(result) // true

5、除了XXX:[^ ]

// 匹配任意除了包含a或b之外的內(nèi)容
let reg = /^[abb]/;
let str = 'bc'
let result = reg.test(str)
console.log(result) // true

6、匹配除了數(shù)字之外的:

① [^0-9]:

// 匹配任意除了0到9之外的內(nèi)容
let reg = /[^0-9]/;
let str = '111ccc'
let result = reg.test(str)
console.log(result) // true

② \D:

// 匹配任意除了0到9之外的內(nèi)容
let reg = /\D/;
let str = '111ccc'
let result = reg.test(str)
console.log(result) // true

7、除了換行符之外的任意字符:.

// 匹配除了換行符之外的任意字符
let reg = /./;
let str = '\n'
let result = reg.test(str)
console.log(result) // false

8、轉(zhuǎn)義字符:\

// 匹配.
let reg = /\./;
let str = 'ab.c'
let result = reg.test(str)
console.log(result) // true

9、匹配任意的字母、數(shù)字、下劃線:

① \w:

let reg = /\w/;
let str = '&111&'
let result = reg.test(str)
console.log(result) // true

② [A-z0-9_]:

let reg = /[A-z0-9_]/;
let str = '&111&'
let result = reg.test(str)
console.log(result) // true

10、匹配除了任意的字母、數(shù)字、下劃線之外的任意內(nèi)容:

① \W:

let reg = /\W/;
let str = '11sA!'
let result = reg.test(str)
console.log(result) // true

② [^A-z0-9_]:

let reg = /[^A-z0-9_]/;
let str = '11sA!'
let result = reg.test(str)
console.log(result) // true

11、匹配空格:\s

let reg = /\s/;
let str = '   11sA   '
let result = reg.test(str)
console.log(result) // true

12、除了空格之外的任意內(nèi)容:\S

let reg = /\S/;
let str = '  aa'
let result = reg.test(str)
console.log(result) // true

13、單詞邊界的任意內(nèi)容:\b

① 單詞邊界含義:?jiǎn)卧~左右兩邊和非單詞的位置,同類無(wú)界。

② 作用:用來(lái)精準(zhǔn)的匹配單詞

let reg = /\bchild\b/;
let str = 'children'
let result = reg.test(str)
console.log(result) // false

14、除了單詞邊界之外的任意內(nèi)容:\B

① 非單詞邊界含義:?jiǎn)卧~內(nèi)部的字符之間的位置。

② 使用:

// 非單詞邊界處的“cat”
let reg = /\Bcat\B/g;
let str = "The cat scattered his food all over the catacomb.";
let result = str.match(reg)
console.log(result) // ['cat']

15、匹配開頭:^

// 匹配當(dāng)前內(nèi)容是否以a開頭
let reg = /^a/;
let str = '  aa'
let result = reg.test(str)
console.log(result) // false

16、匹配結(jié)尾:$

// 匹配當(dāng)前內(nèi)容是否以a結(jié)尾
let reg = /a$/;
let str = '  aa'
let result = reg.test(str)
console.log(result) // true

17、完全匹配:^ $

要求字符串和正則完全匹配

let reg = /^a$/;
let str = "a";
let result = reg.test(str)
console.log(result) // true

四、量詞:設(shè)置一個(gè)內(nèi)容出現(xiàn)的次數(shù)

量詞只對(duì)它前邊的一個(gè)內(nèi)容起作用

1、出現(xiàn)m次:{m}

// 匹配是否有出現(xiàn)3次的a
let reg = /a{3}/;
let str = "aaa123";
let result = reg.test(str)
console.log(result) // true
// 匹配是否有只出現(xiàn)3次的a
let reg = /^a{3}$/;
let str = "aaaa";
let result = reg.test(str)
console.log(result) // false
// 匹配出現(xiàn)3次的字符,字符取值a到z
let reg = /[a-z]{3}/;
let str = "acd";
let result = reg.test(str)
console.log(result) // true
// 匹配出現(xiàn)3次的字符串a(chǎn)b
let reg = /(ab){3}/;
let str = "acd";
let result = reg.test(str)
console.log(result) // false

2、 出現(xiàn)m-n次:{m,n}

// 匹配出現(xiàn)1到3次的a
let reg = /a{1,3}/;
let str = "ahhh";
let result = reg.test(str)
console.log(result) // true

3、 出現(xiàn)m次以上:{m,}

// 匹配出現(xiàn)3次以上的a
let reg = /a{3,}/;
let str = "aa123";
let result = reg.test(str)
console.log(result) // false

4、 至少出現(xiàn)一次:

① +:

// 匹配至少出現(xiàn)1次的a
let reg = /a+/;
let str = "aaa123";
let result = reg.test(str)
console.log(result) // true

② {1,}:

// 匹配至少出現(xiàn)1次的a
let reg = /a{1,}/;
let str = "aaa123";
let result = reg.test(str)
console.log(result) // true

5、出現(xiàn)0次或者多次(任意次數(shù)):

① *:

// 匹配出現(xiàn)0次或者多次的a
let reg = /a*/;
let str = "123";
let result = reg.test(str)
console.log(result) // true

② {0,}:

// 匹配出現(xiàn)0次或者多次的a
let reg = /a{0,}/;
let str = "123";
let result = reg.test(str)
console.log(result) // true

6、出現(xiàn)0次或者1次:

① ?:

// 匹配出現(xiàn)0次或者1次的a
let reg = /a?/;
let str = "b123";
let result = reg.test(str)
console.log(result) // false

② {0,1}:

// 匹配出現(xiàn)0次或者1次的a
let reg = /a{0,1}/;
let str = "b123";
let result = reg.test(str)
console.log(result) // false

五、正則表達(dá)式的方法:

1、 通過(guò)正則表達(dá)式檢查一個(gè)字符串是否符合規(guī)則:

① 正則表達(dá)式.test(字符串):符合返回 true

// 判斷當(dāng)前字符串是否含有 a
let reg = new RegExp('a', 'i');
let str = 'abc';
let result = reg.test(str);
console.log(result) // true

2、將一個(gè)字符串拆分為一個(gè)數(shù)組:字符串.split(正則表達(dá)式):

全局匹配

// 根據(jù)任意字母拆分字符串
let reg = /[A-z]/;
let str = 'a1b2c3d4';
let result = str.split(reg)
console.log(result) // ['', '1', '2', '3', '4']

3、搜索字符串中是否含有指定內(nèi)容:字符串.search(正則表達(dá)式):

searchindexOf的區(qū)別:indexOf的參數(shù)只能是字符串,search的參數(shù)可以是正則表達(dá)式。
只會(huì)查找第一個(gè),即使設(shè)置了全局匹配,也沒有用

如果搜索到指定內(nèi)容,則會(huì)返回第一次出現(xiàn)的索引,如果沒有搜索到,則返回 -1。

// 查找第一個(gè)a加b或或f加c組成的內(nèi)容
let reg = /a[bef]c/;
let str = 'hello abc hello aec afc';
let result = str.search(reg)
console.log(result) // 6

4、將符合條件的內(nèi)容提取出來(lái):

① 字符串.match(正則表達(dá)式):

默認(rèn)情況下,match只會(huì)找到第一個(gè)符合要求的內(nèi)容,將匹配到的內(nèi)容封裝到一個(gè)數(shù)組中返回。設(shè)置正則表達(dá)式的全局匹配模式,會(huì)匹配所有的內(nèi)容

// 不區(qū)分大小寫,全局匹配所有字母
let reg = /[A-z]/ig;
let str = 'a1b2c3d4ABCD';
let result = str.match(reg)
console.log(result) // ['a', 'b', 'c', 'd', 'A', 'B', 'C', 'D']

② 字符串.matchAll(正則表達(dá)式):

必須設(shè)置正則表達(dá)式的全局匹配模式!

返回值是一個(gè)迭代器RegExpStringIterator {},需要使用for-of進(jìn)行遍歷.

let reg = /[A-z]/g;
let str = 'a1b2c3d4ABCD';
let result = str.matchAll(reg)
console.log(result) // RegExpStringIterator {}
let arr = []
for(let i of result) {
    arr.push(i)
}
console.log(arr)

③ 正則表達(dá)式.exec(字符串):

默認(rèn)只會(huì)替換匹配到的第一個(gè)內(nèi)容

// 匹配所有符合axc格式的第一個(gè)內(nèi)容
let reg = /a[a-z]c/;
let str = "abcadcaecacc";
let result = reg.exec(str)
console.log(result) // ['abc', index: 0, input: 'abcadcaecacc', groups: undefined]

Tips: 設(shè)置正則表達(dá)式的全局匹配模式,每調(diào)用一次方法就會(huì)匹配下面的內(nèi)容

// 匹配所有符合axc格式的內(nèi)容
let reg = /a[a-z]c/ig;
let str = "abcadcaecacc";
console.log(reg.exec(str)) // ['abc', index: 0, input: 'abcadcaecacc', groups: undefined]
console.log(reg.exec(str)) // ['adc', index: 3, input: 'abcadcaecacc', groups: undefined]
console.log(reg.exec(str)) // ['aec', index: 6, input: 'abcadcaecacc', groups: undefined]
console.log(reg.exec(str)) // ['acc', index: 9, input: 'abcadcaecacc', groups: undefined]
console.log(reg.exec(str)) // null

將需要提取的分組內(nèi)容用()進(jìn)行包裹

// 匹配所有符合axc格式的內(nèi)容,并且將分組的內(nèi)容進(jìn)行提取
let reg = /a([a-z])c/ig;
let str = "abcadcaecacc";
console.log(reg.exec(str)) //['abc', 'b', index: 0, input: 'abcadcaecacc', groups: undefined]
console.log(reg.exec(str)) // ['adc', 'd', index: 3, input: 'abcadcaecacc', groups: undefined]
console.log(reg.exec(str)) // ['aec', 'e', index: 6, input: 'abcadcaecacc', groups: undefined]
console.log(reg.exec(str)) // ['acc', 'c', index: 9, input: 'abcadcaecacc', groups: undefined]
console.log(reg.exec(str)) // null

獲取所有符合規(guī)則的分組:使用循環(huán)

// 匹配所有符合axc格式的內(nèi)容,并且將分組的內(nèi)容進(jìn)行提取。
let reg = /a(([a-z])c)/ig;
let str = "abcadcaecacc";
let result = reg.exec(str);
let arr = []
while(result) {
    arr.push({
        str: result[0],
        group1: result[1],
        group2: result[2],
    })
    result = reg.exec(str);
}
console.log(arr) 
// [
//     {
//         "str": "abc",
//         "group1": "bc",
//         "group2": "b"
//     },
//     {
//         "str": "adc",
//         "group1": "dc",
//         "group2": "d"
//     },
//     {
//         "str": "aec",
//         "group1": "ec",
//         "group2": "e"
//     },
//     {
//         "str": "acc",
//         "group1": "cc",
//         "group2": "c"
//     }
// ]

5、內(nèi)容替換:字符串.replace(正則表達(dá)式, 新內(nèi)容)

默認(rèn)只會(huì)替換匹配到的第一個(gè)內(nèi)容

// 將匹配到的第一個(gè)a替換為(●ˇ?ˇ●)
let reg = /a/;
let str = 'a1b2a3d4ABaD';
let result = str.replace(reg,'(●ˇ?ˇ●)')
console.log(result) // (●ˇ?ˇ●)1b2a3d4ABaD

六、 常用的正則:

1、去除開頭和結(jié)尾的空格:

var reg = /^\s+|\s+$/g
var str = "       hell    o       "
str.replace(reg,"")  // 結(jié)果:hell    o

2、輸入框中只允許輸入正數(shù)(包含小數(shù)):

onkeyup="value= (value.replace(/[^.0-9]/,'').replace(/.*?(\d+\.?\d*).*/g,'$1')).replace(/^0+/,'0')"

總結(jié) 

到此這篇關(guān)于JavaScript正則表達(dá)式及其方法詳細(xì)介紹的文章就介紹到這了,更多相關(guān)js正則表達(dá)式及方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論