[TOC]
# 1.備選字符集:規定某一位字符的備選字符列表
> 特點:多選一
```
var reg = /上[海天]/g;
// var reg = /上海|上天/g;
var str = "上海,上天,上去,上哪里";
console.log(str.replace(reg,"*"))
```
## 1.1備選字符的unicode號連續
> [0-9]//一個數字
> [a-z]//一個小寫字母
> [A-Z]//一個大寫字母
> [0-9a-zA-Z]//一個數字或字母
例子:
```
var reg = /[0-9]/g;
var reg01 = /[a-zA-Z]/g;
var reg02 = /[0-9a-zA-Z]/g;
var str = "helloABCDEFGHIJKL123456789";
console.log(str.replace(reg,"*"));
console.log(str.replace(reg01,"*"));
console.log(str.replace(reg02,"*"));
```
# 2.預定義字符集:針對常用的備選字符集提供的簡化符號
> [0-9] --> \d //一位數字
> [0-9a-zA-Z_] -->\w //一位數字字母或下劃線
> \s //1位空字符:空格,tab,換行
> . // 除換行外,其余所有字符
例子:
```
var reg = /\s/;
var str = "hello world123456_你我";
console.log(str.replace(reg,"*"));
console.log(str.replace(/\d/g,"*"));
console.log(str.replace(/\w/g,"*"));
```
# 3.量詞:定字符集出現的次數
> 特點:默認一個量詞,僅修飾左側緊鄰的字符集
## 3.1 確定數量:
```
{m,n} -->至少m個,最多n個
{m,} -->m個以上
{m} -->必須m個
```
## 3.2 不確定數量
```
? -->一個或0個
+ -->1個以上
* -->多個或沒有
```
> test() 方法用于檢測正則表達式是否匹配字符串的一部分,返回boolean值
> 語法reg.test(str); 返回boolean值
```
var reg =/\d{5,9}/;
var str = "323232hell";
console.log(reg.test(str)); //true
```
### 貪婪模式和懶惰模式
#### 貪婪模式 :取最大值
```
var str = "123456abc";
var reg = /\d{3,6}/;
console.log(str.replace(reg,"*"))
```
#### 懶惰模式(在后面加?號):取最小值
```
var str = "123456abc";
var reg = /\d{3,6}?/;
console.log(str.replace(reg,"*"))
```
# 4. 選擇和分組
> //選擇
| 讀作"或"
//分組
()
```
轉義字符\
var a ="hello\"";
console.log(a); \\hello"
```
例子:
```
<body>
<textarea id="txt" cols="30" rows="10"></textarea>
<button id="btn">過濾</button>
<textarea id="value" cols="30" rows="10"></textarea>
<script>
var txt = document.getElementById("txt");
var btn = document.getElementById("btn");
var filter = document.getElementById("value");
var reg = /(京東)|(淘寶)/g;
btn.onclick = function(){
var txtValue = txt.value;
var newTxt = txtValue.replace(reg,"**");
// console.log(newTxt);
filter.value = newTxt;
}
</script>
</body>
```
# 5. 指定匹配位置
> 開頭和結尾:^開頭的xxx;$結尾的xxx
```
何時使用:僅匹配開頭的規則和結尾的規則時使用
固定搭配:^正則表達式$-->表示從頭到尾完整匹配
開頭和結尾只出現正則表達式的內容
```
**何時使用:只要驗證時,必須前加^,后加$!**
> ^\s+//匹配字符串開頭的所有空字符
\s+$//匹配字符串結尾的所有空字符
```
var a =" hello";
var reg =/^\s+/;
var str =a.replace(reg,"");
console.log(str);
```
# 6. 排除
> //除了abc
> [^abc]
```
var str = "abchello world";
var reg = /[^abc]/g;
console.log(str.replace(reg,"*"))
```
- 1.JS的基礎知識
- (1)調試
- (2)變量
- (3)數據類型
- 數據類型之間的轉換
- (4)全局變量和局部變量
- (5)運算符和表達式
- (6)數組
- 2.控制語句DOM,BOM,事件
- (1)控制語句
- (2)DOM的基礎
- 節點
- 改變樣式
- DOM事件
- 3.函數
- (1)聲明函數
- (2)構造函數
- (3)函數的參數
- (4)函數的傳參
- (5)改變this
- (6)重載
- (7)回調函數
- 4.數組
- (1)創建數組
- (2)增刪改查
- (3)字符串與數組的轉換
- 5.正則
- (1)創建正則
- (2)字符串中支持正則
- (3)語法
- 最核心的元字符
- 6.ajax
- (1)原生ajax
- (2)http,get,post
- (3)跨域
- (4)jQuery-ajax
- (5)axios
- 7.面向對象
- (1)原型
- (2)原型鏈,繼承
- (3)多態
- 8.es6小結
- 9.js+canvas實現驗證碼
- 10.js的作用域
- 11.閉包
- 實例
- toggle
- 圖片切換
- swiper
- 遮罩顏色漸變
- 表格添加
- 瀑布流
- ajax數據請求渲染
- 百度地圖