正則表達式中的特殊字符

1. 正則表達式的組成

一個正則表達式能夠由簡單的字符構成,好比 /abc/,也能夠是簡單和特殊字符的組合,好比 /ab*c/ 。其中特殊字符也被稱爲元字符,在正則表達式中是具備特殊意義的專用符號,如 ^ 、$ 、+ 等。正則表達式

特殊字符很是多,能夠參考: ide

MDN測試

jQuery 手冊:正則表達式部分ui

2. 邊界符this

正則表達式中的邊界符(位置符)用來提示字符所處的位置,主要有兩個字符spa

邊界符 說明
^ 表示匹配行首的文本(以誰開始)
$ 表示匹配行尾的文本(以誰結束)

若是 ^和 $ 在一塊兒,表示必須是精確匹配。regexp

var rg = /abc/; // 正則表達式裏面不須要加引號 無論是數字型仍是字符串型
// /abc/ 只要包含有abc這個字符串返回的都是true
console.log(rg.test('abc'));
console.log(rg.test('abcd'));
console.log(rg.test('aabcd'));
console.log('---------------------------');
var reg = /^abc/;
console.log(reg.test('abc')); // true
console.log(reg.test('abcd')); // true
console.log(reg.test('aabcd')); // false
console.log('---------------------------');
var reg1 = /^abc$/; // 精確匹配 要求必須是 abc字符串才符合規範
console.log(reg1.test('abc')); // true
console.log(reg1.test('abcd')); // false
console.log(reg1.test('aabcd')); // false
console.log(reg1.test('abcabc')); // false

3. 字符類

字符類表示有一系列字符可供選擇,只要匹配其中一個就能夠了。全部可供選擇的字符都放在方括號內。blog

3.1 [] 方括號

表示有一系列字符可供選擇,只要匹配其中一個就能夠了ip

var rg = /[abc]/; // 只要包含有a 或者 包含有b 或者包含有c 都返回爲true
console.log(rg.test('andy'));//true
console.log(rg.test('baby'));//true
console.log(rg.test('color'));//true
console.log(rg.test('red'));//false
var rg1 = /^[abc]$/; // 三選一 只有是a 或者是 b 或者是c 這三個字母才返回 true
console.log(rg1.test('aa'));//false
console.log(rg1.test('a'));//true
console.log(rg1.test('b'));//true
console.log(rg1.test('c'));//true
console.log(rg1.test('abc'));//true
----------------------------------------------------------------------------------
var reg = /^[a-z]$/ //26個英文字母任何一個字母返回 true - 表示的是a 到z 的範圍  
console.log(reg.test('a'));//true
console.log(reg.test('z'));//true
console.log(reg.test('A'));//false
-----------------------------------------------------------------------------------
//字符組合
var reg1 = /^[a-zA-Z0-9]$/; // 26個英文字母(大寫和小寫均可以)任何一個字母返回 true  
------------------------------------------------------------------------------------
//取反 方括號內部加上 ^ 表示取反,只要包含方括號內的字符,都返回 false 。
var reg2 = /^[^a-zA-Z0-9]$/;
console.log(reg2.test('a'));//false
console.log(reg2.test('B'));//false
console.log(reg2.test(8));//false
console.log(reg2.test('!'));//true

3.2量詞符

量詞符用來設定某個模式出現的次數。字符串

量詞 說明
* 重複0次或更屢次
+ 重複1次或更屢次
? 重複0次或1次
{n} 重複n次
{n,} 重複n次或更屢次
{n,m} 重複n到m次

3.3用戶名錶單驗證

功能需求:

  1. 若是用戶名輸入合法, 則後面提示信息爲: 用戶名合法,而且顏色爲綠色

  2. 若是用戶名輸入不合法, 則後面提示信息爲: 用戶名不符合規範, 而且顏色爲紅色

 

 

 

 

分析:

  1. 用戶名只能爲英文字母,數字,下劃線或者短橫線組成, 而且用戶名長度爲6~16位.

  2. 首先準備好這種正則表達式模式/$[a-zA-Z0-9-_]{6,16}^/

  3. 當表單失去焦點就開始驗證.

  4. 若是符合正則規範, 則讓後面的span標籤添加 right類.

  5. 若是不符合正則規範, 則讓後面的span標籤添加 wrong類.

<input type="text" class="uname"> <span>請輸入用戶名</span>
<script>
// 量詞是設定某個模式出現的次數
var reg = /^[a-zA-Z0-9_-]{6,16}$/; // 這個模式用戶只能輸入英文字母 數字 下劃線 中劃線
var uname = document.querySelector('.uname');
var span = document.querySelector('span');
uname.onblur = function() {
  if (reg.test(this.value)) {
  console.log('正確的');
  span.className = 'right';
  span.innerHTML = '用戶名格式輸入正確';
  } else {
  console.log('錯誤的');
  span.className = 'wrong';
  span.innerHTML = '用戶名格式輸入不正確';
  }
}
</script>

3.4 括號總結

1.大括號 量詞符. 裏面表示重複次數

2.中括號 字符集合。匹配方括號中的任意字符.

3.小括號表示優先級

正則表達式在線測試

4. 預約義類

預約義類指的是某些常見模式的簡寫方式.

 

 

案例:驗證座機號碼

var reg = /^\d{3}-\d{8}|\d{4}-\d{7}$/;
var reg = /^\d{3,4}-\d{7,8}$/;

表單驗證案例

//手機號驗證:/^1[3|4|5|7|8][0-9]{9}$/;
//驗證經過與不經過更換元素的類名與元素中的內容
if (reg.test(this.value)) {
   // console.log('正確的');
   this.nextElementSibling.className = 'success';
   this.nextElementSibling.innerHTML = '<i class="success_icon"></i> 恭喜您輸入正確';
  } else {
      // console.log('不正確');
     this.nextElementSibling.className = 'error';
     this.nextElementSibling.innerHTML = '<i class="error_icon"></i>格式不正確,請重新輸入 ';
}
//QQ號驗證: /^[1-9]\d{4,}$/; 
//暱稱驗證:/^[\u4e00-\u9fa5]{2,8}$/
//驗證經過與不經過更換元素的類名與元素中的內容 ,將上一步的匹配代碼進行封裝,屢次調用便可
function regexp(ele, reg) {
   ele.onblur = function() {
     if (reg.test(this.value)) {
       // console.log('正確的');
       this.nextElementSibling.className = 'success';
       this.nextElementSibling.innerHTML = '<i class="success_icon"></i> 恭喜您輸入正確';
  } else {
    // console.log('不正確');
    this.nextElementSibling.className = 'error';
    this.nextElementSibling.innerHTML = '<i class="error_icon"></i> 格式不正確,請重新輸入 ';
          }
      }
};
//密碼驗證:/^[a-zA-Z0-9_-]{6,16}$/
//再次輸入密碼只需匹配與上次輸入的密碼值 是否一致

5. 正則替換replace

replace() 方法能夠實現替換字符串操做,用來替換的參數能夠是一個字符串或是一個正則表達式。

var str = 'andy和red';
var newStr = str.replace('andy', 'baby');
console.log(newStr)//baby和red
//等同於 此處的andy能夠寫在正則表達式內
var newStr2 = str.replace(/andy/, 'baby');
console.log(newStr2)//baby和red
//所有替換
var str = 'abcabc'
var nStr = str.replace(/a/,'哈哈')
console.log(nStr) //哈哈bcabc
//所有替換g
var nStr = str.replace(/a/a,'哈哈')
console.log(nStr) //哈哈bc哈哈bc
//忽略大小寫i
var str = 'aAbcAba';
var newStr = str.replace(/a/gi,'哈哈')//"哈哈哈哈bc哈哈b哈哈"

案例:過濾敏感詞彙

<textarea name="" id="message"></textarea> <button>提交</button>
<div></div>
<script>
   var text = document.querySelector('textarea');
   var btn = document.querySelector('button');
   var div = document.querySelector('div');
   btn.onclick = function() {
  div.innerHTML = text.value.replace(/激情|gay/g, '**');
  }
</script>
相關文章
相關標籤/搜索