JavaScript中正則表達(dá)式判斷匹配規(guī)則及常用方法
字符串是編程時(shí)涉及到的最多的一種數(shù)據(jù)結(jié)構(gòu),對字符串進(jìn)行操作的需求幾乎無處不在。 正則表達(dá)式是一種用來匹配字符串的強(qiáng)有力的武器。它的設(shè)計(jì)思想是用一種描述性的語言來給字符串定義一個(gè)規(guī)則,凡是符合規(guī)則的字符串,我們就認(rèn)為它“匹配”了。
\d可以匹配一個(gè)數(shù)字 '00\d'可以匹配'007' ,'\d\d\d'可以匹配'010'
\w可以匹配一個(gè)字母或數(shù)字 '\w\w'可以匹配'js'
\s可以匹配一個(gè)空格(也包括Tab等空白符)
\DWS都是表示匹配與小寫字母相反的匹配關(guān)系
\數(shù)字n表示指向第n個(gè)分組捕獲到的字符串文本的一個(gè)引用,能夠再次被匹配 /(\d+)(0*)\1/可以匹配‘22300223'
.可以匹配任意字符 'js.'可以匹配'jsp'、'jss'、'js!'
正則表達(dá)式量詞:
*表示任意個(gè)字符(包括0個(gè))
+表示至少一個(gè)字符
?表示0個(gè)或1個(gè)字符
{n}表示n個(gè)字符
{n,m}表示n-m個(gè)字符
A|B可以匹配A或B (J|j)ava(S|s)cript可以匹配'JavaScript'、'Javascript'、'javaScript'或者'javascript'
^表示行的開頭 ^\d表示必須以數(shù)字開頭
$表示行的結(jié)束 \d$表示必須以數(shù)字結(jié)束
[]表示范圍,字符類
[a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或下劃線、$開頭,后接任意個(gè)由一個(gè)數(shù)字、字母或者下劃線、$組成的字符串,也就是JavaScript允許的變量名
[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}更精確地限制了變量的長度是1-20個(gè)字符(前面1個(gè)字符+后面最多19個(gè)字符)
[] 中的^ 表示排除某個(gè)字符 [^#?] 表示除了?和#的所有字符
()表示捕獲型分組,可以將匹配的字符串進(jìn)行分組,提取子串。
如果正則表達(dá)式中定義了組,就可以在RegExp對象上用exec()方法提取出子串來。
exec()匹配成功后,返回一個(gè)Array,第一個(gè)元素是正則表達(dá)式匹配到的整個(gè)字符串,后面的字符串表示匹配成功的子串。
exec()匹配失敗時(shí)返回null。
^(\d{3})-(\d{3,8})$分別定義了兩個(gè)組,可以直接從匹配的字符串中提取出區(qū)號和本地號碼:
var re = /^(\d{3})-(\d{3,8})$/; re.exec('010-12345'); // ['010-12345', '010', '12345'] re.exec('010 12345'); // null
(?:) 分組不想被捕獲的時(shí)候使用,可以提高程序執(zhí)行速度,非捕獲型分組不會(huì)干擾捕獲型分組編號。
用正則表達(dá)式切分字符串比用固定的字符更靈活
'a,b;; c d'.split(/[\s\,\;]+/); // ['a', 'b', 'c', 'd']
RegExp對象的test()方法用于測試給定的字符串是否符合條件。
var re = /^\d{3}\-\d{3,8}$/; re.test('010-12345'); // true re.test('010-1234x'); // false
需要特別指出的是,正則匹配默認(rèn)是貪婪匹配,也就是匹配盡可能多的字符。
var re = /^(\d+)(0*)$/; re.exec('102300'); // ['102300', '102300', '']
由于\d+采用貪婪匹配,直接把后面的0全部匹配了,結(jié)果0*只能匹配空字符串了。
加個(gè)?就可以讓\d+采用非貪婪匹配:
var re = /^(\d+?)(0*)$/; re.exec('102300'); // ['102300', '1023', '00']
特殊標(biāo)志
g標(biāo)志 ,表示全局匹配
i標(biāo)志,表示忽略大小寫
m標(biāo)志,表示執(zhí)行多行匹配
需要使用轉(zhuǎn)義符' \ '的15個(gè)特殊字符
/ \ [ ] ( ) { } ? + * | . ^ $
總結(jié)
以上所述是小編給大家介紹的JavaScript中正則表達(dá)式判斷匹配規(guī)則及常用方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
詳解js的事件處理函數(shù)和動(dòng)態(tài)創(chuàng)建html標(biāo)記方法
本文主要對javascript的事件處理函數(shù),動(dòng)態(tài)創(chuàng)建html標(biāo)記的兩種方法進(jìn)行詳細(xì)介紹,具有很好的參考價(jià)值,需要的朋友一起來看下吧2016-12-12JavaScript開發(fā)者必備的10個(gè)Sublime Text插件
Sublime Text幾乎是任何開發(fā)者在其工具箱的必備應(yīng)用程序,這篇文章主要介紹了JavaScript開發(fā)者必備的10個(gè)Sublime Text插件,感興趣的小伙伴們可以參考一下2016-02-02微信小程序新增的拖動(dòng)組件movable-view使用教程
這篇文章主要給大家介紹了微信小程序最近新增的拖動(dòng)組件movable-view的簡單使用教程,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-05-05淺析JavaScript定時(shí)器setTimeout的時(shí)延問題
這篇文章主要為大家詳細(xì)介紹了JavaScript中定時(shí)器setTimeout有最小時(shí)延的相關(guān)知識,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11