mirror of
https://github.com/NohamR/knowledge-kit.git
synced 2026-05-24 20:00:37 +00:00
docs: 批量博文
This commit is contained in:
94
Chapter2 - Web FrontEnd/2.2.md
Normal file
94
Chapter2 - Web FrontEnd/2.2.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# 正则表达式
|
||||
|
||||
* \d :匹配一个数字
|
||||
* \w : 匹配任意一个字母或数字
|
||||
* . : 可以匹配任意字符串
|
||||
* \* : 可以匹配任意个字符(包括0个)
|
||||
* +: 至少一个字符
|
||||
* ? : 表示0个或1个字符
|
||||
|
||||
* {n} :表示n个字符
|
||||
|
||||
* {n-m} : 表示n-m个字符
|
||||
|
||||
* \[ \] :表示范围
|
||||
|
||||
* \[0-9a-zA-Z\\_\] : 可以匹配一个数字、字母或者下划线
|
||||
|
||||
* \[0-9a-zA-Z\\_\]+: 可以匹配至少由一个数字、字母或者下划线组成的字符串
|
||||
|
||||
* \[0-9a-zA-Z\_$\]\[0-9a-zA-Z\_\_$\]\* : 可以匹配由数字、字母或者下划线,后接任意个由一个数字、字母或者下划线、$组成的字符串
|
||||
|
||||
# RegExp
|
||||
|
||||
JS有2种方式创建一个正则表达式。
|
||||
|
||||
第一种方式是直接通过/正则表达式/写出来。
|
||||
|
||||
第二种 是通过new RegExp\('正则表达式'\)创建一个RegExp对象。
|
||||
|
||||
#### 注意
|
||||
|
||||
因为第二种的写法问题,所以每个`\` 需要转义,也就是 `\\`
|
||||
|
||||
```
|
||||
<script>
|
||||
function test(){
|
||||
var node = document.getElementById("validate").value;
|
||||
var regStr = /^[0-9a-zA-Z]{3,8}\s*\d[3-8]*$/;
|
||||
var regStr2 = new RegExp('^[0-9a-zA-Z]{3,8}\\s*\\d[3-8]*$');
|
||||
console.log(regStr2.test(node));
|
||||
}
|
||||
</script>
|
||||
<input type="text" placeholder="请输入" id="validate" />
|
||||
<button onclick="test()">检测</button>
|
||||
```
|
||||
|
||||
# 分组
|
||||
|
||||
除了简单地判断是否匹配外,正则表达式还可以用来提取分组 ,用 `()`
|
||||
|
||||
```
|
||||
<script>
|
||||
function test(){
|
||||
var node = document.getElementById("validate").value;
|
||||
var regStr = /^(\d{3})-(\d{3,8})$/;
|
||||
var regStr2 = new RegExp('^(\\d{3})-(\\d{3,8})$');
|
||||
console.log(regStr2.exec(node));
|
||||
}
|
||||
</script>
|
||||
<input type="text" placeholder="请输入" id="validate" />
|
||||
<button onclick="test()">检测</button>
|
||||
```
|
||||
|
||||
* 如果正则表达式中定义了组,就可以在RegExp对象上用exec\(\)方法提取出子串来。
|
||||
|
||||
* exec\(\)方法在匹配成功后会返回一个Array,第一个元素为正则表达式匹配到的整个字符串,后面的元素则表示匹配成功的子串。
|
||||
* exec\(\)方法在匹配失败后会返回null
|
||||
|
||||
|
||||
|
||||
# 贪婪匹配
|
||||
|
||||
|
||||
|
||||
由于 正则表达式默认使用贪婪匹配模式,因此会造成一些问题。比如
|
||||
|
||||
```
|
||||
var res = /^(\d+)(0*)$/;
|
||||
res.exec('102300'); //['102300','102300','']
|
||||
```
|
||||
|
||||
由于\d+采用贪婪匹配模式,所以会匹配到后面的0,所以加上\d+?代表使用非贪婪匹配模式
|
||||
|
||||
```
|
||||
var res = /^(\d+?)(0*)$/;
|
||||
res.exec('102300');
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user