简单入门Javascript正则表达式
我們已經會熟練使用js字符串類型了,例如你想知道一個變量是否等于一個字符串,可能可能這樣判斷
if(a=='hello,world'){... } 復制代碼但是往往我們有時候對一些字符串判斷顯得力不從心,例如判斷一個文件的類型是否為js類型,可能有下面幾種文件名格式
1, hello.js 2, js.hello 3, hellojs 4, helljso 復制代碼以我們人腦的認知來看,我們一眼能夠看出只有第一個符合我們的要求,但是我們怎么寫這個判斷程序呢?例如我們可以這樣判斷,例如js字符串方法,從右邊往左邊取三位,如果為‘.js’則匹配成功。 但是我問一下如果文件名描述為hello..js呢?顯然,這種方法不太適合,所以需要正則表達式來進行精確匹配了。 正則表達式用于描述一種特征,就例如你描述某某女生長得怎么樣一樣。例如瓜子臉,一米六到一米七,長頭發... 同理我們可以使用正則表達式來描述我們需要的字符,例如郵箱格式:
一串數字或者字母+@+字符串或者數字+'.'+'數字或者字符串' 復制代碼我們怎么用代碼來描述我們的這個對象呢,我們可以使用例如下面的寫法
var a=/hello/i 或者 var a = new RegExp('hello',i); 復制代碼/ / 之間寫入你的匹配規則 后面加一個修飾符i 或者g或者m
i表示忽略大小寫,即人為HELLO和hello是一樣的 g表示全局,多用在匹配和搜索中,我們先暫且不管。 m表示多行匹配 復制代碼我們首先學會怎么描述規則,即怎么寫/ /之間的規則 對于某種特征一般有一下幾種關系。
對于我們是否寫對了規則,我們可以用test()方法試一試 test()好比一面照妖鏡
var a=/hello/i console.log(a.test('heelo') //false 復制代碼說明heelo和a不匹配,是個假的。 下面分別說明上述幾種
下面有幾個常用的[]寫法
1.[a-z] 包含字母let a=/[a-z]/;console.log(a.test('a')) //trueconsole.log(a.test('Z')) //false 因為區分大小寫console.log(a.test('abc')) //trueconsole.log(a.test('aS')) //true 2.[A-Za-z0-9]包含大寫或小寫字母或數字 復制代碼單單使用[]是有局限的,因為它能匹配的實在是太寬泛了,只要包含即可。例如[a-z],對于字符'a2'也是符合的。要使得我們匹配更加精確,正則表達式還有許多武器,例如元字符。 元字符個人理解是一種限制規則來縮小匹配范圍 一般來說有
限定屬性以及長度。
\d 表示匹配一位整數 相反\D匹配一個非數字;\w 表示匹配一位英文單詞 相反\W匹配一個非英文單詞;\s 表示匹配一位空格 相反\S匹配一個非空格;...更多可以參考 http://www.runoob.com/jsref/jsref-obj-regexp.html 復制代碼使用這個有什么用呢?你已經知道了屬性和長度,你可以去檢測某些連在一起的特征,例如你現在有一篇英文的文章,我需要找到特征: 3位數字+3位字母的部分標紅:
let txt='s23df12S456abx'; ==> /\d\d\d\w\w\w/let a=/\d\d/; console.log(a.test('1')) //false console.log(a.test('12')) //true console.log(a.test('1ac2')) //false 必須兩個相連 let b=/\s/; console.log(b.test('my file.js')) //true 檢測是否含有空格 復制代碼限定位置
我們已經會使用屬性加長度了,但是有時候往往我們也需要位置的限定 。下面列舉幾個常用的元字符
$ 表示結尾 例如/js$/表示js不能再有任何字符串了,空格也不行 let a=/hello$/; console.log(a.test('hello')) //true console.log(a.test('hello world')) //false console.log(a.test('hello ')) //false ^ 表示開頭 意思和 $ 相反 即使空格也不行,一般^和$成對使用,可以構造出一些常用的正則表達式。 例如 由字母和數字組成,長度不限的話可以表示為 /^[A-Za-z0-9]$/ let a=/^[A-Za-z0-9]$/; console.log(a.test('我a')) //false console.log(a.test('$123a')) //false console.log(a.test('hello 23')) //fasle console.log(a.test('hello23 ')) //false 復制代碼如果想要使得空格也可以匹配 可以使用\b \b表示邊界,可以為開頭或者結尾 例如 ' hello,world '
let a=/\bhi\b/;console.log(a.test('hi')) //trueconsole.log(a.test('him')) //false 后面有mconsole.log(a.test('hi m')) //true hi是單獨的console.log(a.test('shi')) //false 前面有s 復制代碼量詞使用
例如我們想匹配連續三個數字,我們可以:
/\d\d\d/ 復制代碼假如要匹配100個呢 寫100個嗎?我們不可能手動寫100個吧 我們有下面幾個常用的表述:
當然還有許多正則表達式規則了,實在寫不完了,讀者可以自行百度。(完)
轉載于:https://juejin.im/post/5be983cc6fb9a049d2359488
總結
以上是生活随笔為你收集整理的简单入门Javascript正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到二婚是什么意思
- 下一篇: Java这些多线程基础知识你会吗?