日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

简单入门Javascript正则表达式

發布時間:2023/11/29 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单入门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表示多行匹配 復制代碼

我們首先學會怎么描述規則,即怎么寫/ /之間的規則 對于某種特征一般有一下幾種關系。

  • 精確的。例如字符為'hello'的,只需/hello/即可,如果你接收HELLO,即/hello/i即可
  • 含有,例如0-9之間
  • 范圍加限定長度,例如我需要匹配長度為4的0-9之間數字
  • 邊界的,例如 結尾為.js 或者開頭為020-的電話格式
  • 對于我們是否寫對了規則,我們可以用test()方法試一試 test()好比一面照妖鏡

    var a=/hello/i console.log(a.test('heelo') //false 復制代碼

    說明heelo和a不匹配,是個假的。 下面分別說明上述幾種

  • 包含[],這種關系類似于數學之中排列組合,例如[abc],代表a,b,c所能組成的各種組合
  • let a=/[0-9]/; console.log(a.test(9)) //true console.log(a.test(90)) //true console.log(a.test('90')) //true console.log(a.test('90SS')) //true console.log(a.test('ABCD')) //falselet b=/[0]/; console.log(b.test(9)) //fasle console.log(b.test(90)) //true 復制代碼let a=/[abc]/; console.log(a.test('a')) //true console.log(a.test('ac')) //true console.log(a.test('abc')) //true console.log(a.test('ABCD')) //false 復制代碼let a=/[*&$]/; console.log(a.test('*')) //true console.log(a.test('*$')) //true 復制代碼

    下面有幾個常用的[]寫法

    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個吧 我們有下面幾個常用的表述:

  • +表示重復 n+匹配任何包含至少一個 n 的字符串。 /abc+/ 可以匹配 abc abcc abccccc abccccd
  • *表示匹配任何包含至少0個或者一個 n 的字符串
  • /abc*/ 可以匹配 ab abc abccc abccd 可以不包括c 復制代碼
  • {}使用 上述+和*號范圍都可以多到無限多。但是要表示具體多少個呢 我們可以使用{},這類似于數學里的表示范圍[a,b]
  • let a=/^c{1,3}$/; console.log(a.test('c')) //true console.log(a.test('cc')) //true console.log(a.test('ccc')) //true console.log(a.test('cccc')) //false 其中{1,3}表示出現1-3個 {1,}表示匹配一個或者一個以上 {1}表示只匹配一個。 復制代碼

    當然還有許多正則表達式規則了,實在寫不完了,讀者可以自行百度。(完)

    轉載于:https://juejin.im/post/5be983cc6fb9a049d2359488

    總結

    以上是生活随笔為你收集整理的简单入门Javascript正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。