1.正則表達式:
<script>
? ? ? ? /* [a-z ]查找任何小寫從a到z的字符 */
? ? ? ? /* reg是構(gòu)造函數(shù)RegExp new出來的實例化對象 */
? ? ? ? /* let reg = new RegExp(/[a-z]/); */
? ? ? ? /* 正則方法test()判斷你輸入的字符串是否符合要求
? ? ? ? 符合就返回true击你,不符合就false */
? ? ? ? /* 用字面量方式來表示正則 */
? ? ? ? /* g 執(zhí)行全局匹配(查找所有匹配而非在找到第一個匹配后停止) */
? ? ? ? let str = 'abc1a2c'
? ? ? ? console.log(str.match(/a/g));
? ? ? ? /* i執(zhí)行對大小寫不敏感的匹配 */
? ? ? ? let reg = /[a-z]/i;
? ? ? ? console.log(reg.test('C'));
? ? ? ? /* console.log(reg.test('a')); */
? ? </script>
2.正則常用表達式:
<script>
? ? ? ? //[A-Z] 查找任何A到Z的字符
? ? ? ? //[a-zA-Z]表示大小寫26的字母都能匹配
? ? ? ? //[0-9] 查找任何從0到9
? ? ? ? let reg = /[a-zA-Z]/;
? ? ? ? console.log(reg.test('C'));
? ? ? ? let reg = /[0-9]/
? ? ? ? /* 只要有一個符合都返回true */
? ? ? ? console.log(reg.test(0));
? ? ? ? /* 全部都匹配 */
? ? ? ? let reg = /[0-9a-zA-Z]/;
? ? ? ? console.log(reg.test('abc123'))
? ? ? ? let reg = /[abc]/;
? ? ? ? console.log(reg.test('a'));
? ? ? ? let reg = /[^abc]/;/* 除了abc */
? ? ? ? /* 在[]里面寫叫除了
? ? ? ? 寫在[]外面表示以...開頭 */
? ? ? ? let reg = /^[abc]/
? ? ? ? /* 表示以...結(jié)尾 */
? ? ? ? let reg = /[abc]$/
? ? ? ? console.log(reg.test('d'));
? ? ? ? /* +表示匹配前面字符串一次或者多次 */
? ? ? ? let reg = /^[a-z]+$//* 表示純26個英文大小寫可以匹配 */
? ? ? ? /* {n,m} 表示最少匹配n次最多匹配m次 */
? ? ? ? let reg = /^[a-zA-Z0-9]{6,}$/
? ? ? ? /* 不能少于6位, */
? ? ? ? let reg = /^[a-zA-Z0-9]{6}$/
? ? ? ? /* 必須6位谎柄,必須加上$限定符 */
? ? ? ? let reg = /^[a-zA-Z0-9]{6,10}$/
? ? ? ? /* 不少于6位丁侄,不大于10位 */
? ? ? ? /* *表示匹配0次或者多次 */
? ? ? ? let reg = /^[a-zA-Z0-9]*$/
? ? ? ? /* ?表示0次或者一次 */
? ? ? ? let reg = /^[a-zA-Z0-9]{6,}?$/
? ? </script>
正則常用表達式練習:
<!-- 1.匹配一串字符 包括多個英文字母包括大小寫和數(shù)字 -->
? ? <!-- 2.用戶名: 只能數(shù)字,不小于5
? ? ? ? ? ? ? ? ? ?只能大小寫字母[5-9]包括5和9
? ? ? ? ? ? ? ? ? ?只能出現(xiàn)0次或多次 包括大小寫和數(shù)字
? ? ? ? ? ? ? ? ? ?只能出現(xiàn)0次 一次大小寫和數(shù)字 -->
? ? <script>
? ? ? ? /* let reg1 = /^[0-9a-z]+$/i;
? ? ? ? console.log(reg2.test('asdASD2131')); */
? ? ? ? let reg2 = /^[0-9]{5,}$/;
? ? ? ? ? ? ? ? ? ?/^[a-zA-Z]{5,9}$/;
? ? ? ? ? ? ? ? ? ?/^[a-z0-9A-Z]*$/;
? ? ? ? ? ? ? ? ? ?/^[a-z0-9A-Z]?$/
? ? </script>
3.正則元字符:
<script>
? ? ? ? /* \w ?匹配數(shù)字朝巫,字母鸿摇,下劃線 */
? ? ? ? let reg = /^\w+$/;
? ? ? ? console.log(reg.test('_abc123'));
? ? ? ? /* \W ?匹配非數(shù)字,字母劈猿,下劃線 */
? ? ? ? let reg = /^\W+$/;
? ? ? ? console.log(reg.test('_abc123__'));
? ? ? ? /* \d ?匹配數(shù)字*/
? ? ? ? let reg = /^\d+$/;
? ? ? ? console.log(reg.test('213213'));
? ? ? ? /* \d ?匹配非數(shù)字*/
? ? ? ? let reg = /^\D+$/;
? ? ? ? /* \s ?匹配空白字符,換行\(zhòng)n,回車\r*/
? ? ? ? let reg = /^\s+$/;
? ? ? ? console.log(reg.test('/r'));
? ? ? ? /* \S ?匹配非空白字符,換行\(zhòng)n,回車\空字符串*/
? ? ? ? let reg = /^\S+$/;
? ? ? ? console.log(reg.test('abc123'));
? ? ? ? /* \n ?匹配換行符*/
? ? ? ? let reg = /^\n+$/;
? ? </script>
正則元字符練習:
<!-- 匹配非數(shù)字拙吉,字母,下劃線 6-9 -->
? ? <script>
? ? ? ? let reg = /^\W{6,9}$/
? ? ? ? console.log(reg.test('()()()()'));
? ? </script>
4.校驗正則:
<script>
? ? ? ? /* 1.test符合返回true揪荣,不符合返回false */
? ? ? ? /* exec 符合返回一個數(shù)組筷黔,不符合返回null*/
? ? ? ? let reg = /^[a-z]+$/g;
? ? ? ? console.log( reg.exec('abc'));
? ? </script>
5.String類支持正則的方法:
<script>
? ? ? ? let str = '123abc';
? ? ? ? /* 返回匹配到的第一個字符串的下標,否則返回-1 */
? ? ? ?console.log(str.search(/[a-z]/)); /* 返回3 */
? ? ? ?/* 沒有返回匹配的文本返回null仗颈,否則返回一個數(shù)組(依賴于是否具有全局標志) */
? ? ? ?let str = 'abc123qew';
? ? ? ?console.log(str.match(/^[0-9]/g));/* 返回['1','2','3'] */
? ? ? ?console.log(str.match(/^[0-9]+$/g));/* 返回null */
? ? ? ?/* 返回一個新的字符串 */
? ? ? ?let str = 'abc123qwe'
? ? ? ?let newStr = str.replace('bc','oo');
? ? ? ?let newStr = str.replace(/[0-9]/,'oo');/* abcoo23qwe */
? ? ? ?let newStr = str.replace(/[0-9]/g,'oo');/* abcoooooo23qwe */
? ? ? ?console.log(newStr);
? ? ? ?let str = 'a1b2c3';
? ? ? ?console.log(str.split('-'));/* 匹配不到會把整個字符串當成數(shù)組返回 */
? ? ? ?/* 以數(shù)字為分隔符來分割 */
? ? ? ?console.log(str.split(/[0-9]/,3));/* abc */
? ? ? ?/* split第二個參數(shù)表示分割成幾個數(shù)組 */
? ? </script>
String類支持正則的方法練習:
<script>
? ? ? ? /* 都是一個或者多個 */
? ? ? ? /* 驗證26個英文字母組成的字符串 */
? ? ? ? let reg = /^[a-zA-Z]+$/
? ? ? ? /* 驗證由數(shù)字和26個英文字母組成的字符串 */
? ? ? ? let reg = /^[a-zA-Z0-9]+$/
? ? ? ? let reg = /^\d{1}$/
? ? ? ? /* 驗證由數(shù)字佛舱,字母,下劃線組成的字符串 */
? ? ? ? let reg = /^\w+$/;
? ? ? ? /* 驗證漢字 ? \u4e00-\u9fa5 */
? ? ? ? let reg = /^[\u4e00-\u9fa5]+$/
? ? ? ? console.log(reg.test('u4e00'));
? ? </script>
6.用正則給如下字符串的數(shù)字加上中括號:
<script>
? ? ? ? let str = 'abc345efg';
? ? ? ? let newstr = str.split('')
? ? ? ? for(i=0;i<newstr.length;i++){
? ? ? ? ? ?if(/\d/.test(newstr[i])){
? ? ? ? ? ? ? ?newstr[i]='{'+newstr[i]+'}'
? ? ? ? ? ?}
? ? ? ? }arr = newstr.join('')
? ? ? ? alert(arr)
? ? </script>