js之正则1
在看jquery的源碼時,看到對$對象的init入口對參數解析時,正則的迷惑。 疑惑點:z = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/ a = z.exec(‘<div>’) ? ?—— ? ? ["<div>", "<div>", undefined] a.index ? ??—? 0 ? ? ??index 屬性聲明的是匹配文本的第一個字符的位置 a.input ? ??—??‘<div>’?input 屬性則存放的是被檢索的字符串 string 注:exec() 找到了匹配的文本,則返回一個結果數組。否則,返回 null。此數組的第 0 個元素是與正則表達式相匹配的文本,第 1 個元素是與 RegExpObject 的第 1 個子表達式相匹配的文本(如果有的話),第 2 個元素是與 RegExpObject 的第 2 個子表達式相匹配的文本(如果有的話),以此類推。 ? [xyz] 表示匹配集合中的任意一個元素,?[^xyz]反之. r = /[xyz]/ ? r.exec(‘xyz’)=[‘x’],?r.exec(‘yz’)=[‘y’]; r = /[^xyz]/ ?r.exec('xyz’)=null, ?r.exec(‘abc’)=[‘a’]. | ?表示選擇,或 r =?/ab|cd/ ? r.exec(‘cd’)=[‘cd'] ()?括號:?把單獨的項目分組成子表達式;?在完整的模式中定義子模式 r = /[a-z]+\d+/ ? ? ? r.exec('asdf12’)=["asdf12"] r = /[a-z]+(\d+)/ ? ?r.exec('asdf12’)=["asdf12", "12"] z=/(3)/ ? ? ? ? ? ??z.exec(‘3’)=[‘3’, ‘3'] z=/(?:3)/ ? ?????? ?z.exec(‘3’)=[‘3'] z=/(?:(3))/ ? ? ? ?z.exec(‘3’)=[‘3’, ‘3'] 有時候我們不希望捕獲某些分組,只需要在分組內加上 ?: 就可以了,著并不意味著該分組內容不屬于正則表達式,只是不會給這個分組加編號了而已
轉載于:https://www.cnblogs.com/lyre/p/5458366.html
總結
- 上一篇: 练习:要对字符串进行长度(由短到长)排序
- 下一篇: Unreal Engine 4 —— 冷