Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
「JavaScript 從入門到精通」1.語法和數據類型
「JavaScript 從入門到精通」2.流程控制和錯誤處理
「JavaScript 從入門到精通」3.循環和迭代
「JavaScript 從入門到精通」4.函數
「JavaScript 從入門到精通」5.表達式和運算符
「JavaScript 從入門到精通」6.數字
「JavaScript 從入門到精通」7.時間對象
JS中的正則表達式是用來匹配字符串中指定字符組合的模式。
另外需要記住:正則表達式也是對象。
正則表達式的返回值,是一個新的RegExp對象,具有指定的模式和標志。
返回信息介紹:
關于正則表達式的一些方法屬性,文章后面介紹,這里先復習定義和使用。
JS的正則表達式可以被用于:
2.1 RegExp對象方法
str: 需要檢索的字符串。
若檢索成功,返回匹配的數組,否則返回null。
返回信息介紹:
str:需要檢索的字符串。
若匹配成功返回true否則false。
等價于 reg.exec(str) !=null。
^str表示匹配以str開頭的字符串,這些符號文章后面會介紹。
2.2 String對象方法
str.search(reg):
str:被檢索的源字符串。
reg:可以是需要檢索的字符串,也可以是需要檢索的RegExp對象,可以添加標志,如i。
若檢索成功,返回第一個與RegExp對象匹配的字符串的起始位置,否則返回-1。
str.match(reg):
str:被檢索的源字符串。
reg:可以是需要檢索的字符串,也可以是需要檢索的RegExp對象,可以添加標志,如i。
若檢索成功,返回與reg匹配的所有結果的一個數組,數組的第一項是進行匹配完整的字符串,之后的項是用圓括號捕獲的結果,否則返回null。
'see Chapter 3.4.5.1' 是整個匹配。
'Chapter 3.4.5.1' 被'(chapter \d+(\.\d)*)'捕獲。
'.1' 是被'(\.\d)'捕獲的最后一個值。
'index' 屬性(22)是整個匹配從零開始的索引。
'input' 屬性是被解析的原始字符串。
將字符串中指定字符替換成其他字符,或替換成一個與正則表達式匹配的字符串。
str.replace(sub/reg,val):
val可以使用特殊變量名:
將一個字符串,按照指定符號分割成一個字符串數組。
str.split(sub[, maxlength]):
2.3 使用情況
詳細的每個符號的用法,可以查閱 W3school JavaScript RegExp 對象
3.1 修飾符
修飾符描述i執行對大小寫不敏感的匹配。g執行全局匹配(查找所有匹配而非在找到第一個匹配后停止)。m執行多行匹配。
3.2 方括號
用于查找指定返回之內的字符:
.3 元字符
元字符是擁有特殊含義的字符:
3.4 量詞
4.1 介紹
在ES5中有兩種情況。
ES6中使用:
第一個參數是正則對象,第二個是指定修飾符,如果第一個參數已經有修飾符,則會被第二個參數覆蓋。
new RegExp(/abc/ig, 'i');
4.2 字符串的正則方法
常用的四種方法:match()、replace()、search()和split()。
4.3 u修飾符
添加u修飾符,是為了處理大于uFFFF的Unicode字符,即正確處理四個字節的UTF-16編碼。
/^\uD83D/u.test('\uD83D\uDC2A'); // false /^\uD83D/.test('\uD83D\uDC2A'); // true
由于ES5之前不支持四個字節UTF-16編碼,會識別為兩個字符,導致第二行輸出true,加入u修飾符后ES6就會識別為一個字符,所以輸出false。
注意:
加上u修飾符后,會改變下面正則表達式的行為:
var a=""; /^.$/.test(a); // false /^.$/u.test(a); // true
/\u{61}/.test('a'); // false /\u{61}/u.test('a'); // true /\u{20BB7}/u.test(''); // true
/a{2}/.test('aa'); // true /a{2}/u.test('aa'); // true /{2}/.test(''); // false /{2}/u.test(''); // true
/[a-z]/i.test('\u212A') // false /[a-z]/iu.test('\u212A') // true
檢查是否設置u修飾符: 使用unicode屬性。
const a=/hello/; const b=/hello/u; a.unicode // false b.unicode // true
4.4 y修飾符
y修飾符與g修飾符類似,也是全局匹配,后一次匹配都是從上一次匹配成功的下一個位置開始。區別在于,g修飾符只要剩余位置中存在匹配即可,而y修飾符是必須從剩余第一個開始。
lastIndex屬性: 指定匹配的開始位置:
返回多個匹配:
一個y修飾符對match方法只能返回第一個匹配,與g修飾符搭配能返回所有匹配。
'a1a2a3'.match(/a\d/y); // ["a1"] 'a1a2a3'.match(/a\d/gy); // ["a1", "a2", "a3"]
檢查是否使用y修飾符:
使用sticky屬性檢查。
const a=/hello\d/y; a.sticky; // true
4.5 flags屬性
flags屬性返回所有正則表達式的修飾符。
/abc/ig.flags; // 'gi'
在正則表達式中,點(.)可以表示任意單個字符,除了兩個:用u修飾符解決四個字節的UTF-16字符,另一個是行終止符。
終止符即表示一行的結束,如下四個字符屬于“行終止符”:
/foo.bar/.test('foo\nbar') // false
上面代碼中,因為.不匹配\n,所以正則表達式返回false。
換個醒,可以匹配任意單個字符:
/foo[^]bar/.test('foo\nbar') // true
ES9引入s修飾符,使得.可以匹配任意單個字符:
/foo.bar/s.test('foo\nbar') // true
這被稱為dotAll模式,即點(dot)代表一切字符。所以,正則表達式還引入了一個dotAll屬性,返回一個布爾值,表示該正則表達式是否處在dotAll模式。
const re=/foo.bar/s; // 另一種寫法 // const re=new RegExp('foo.bar', 's'); re.test('foo\nbar') // true re.dotAll // true re.flags // 's'
/s修飾符和多行修飾符/m不沖突,兩者一起使用的情況下,.匹配所有字符,而^和$匹配每一行的行首和行尾。
公眾號:前端自習課
則表達式在js中有很多用途,最常見的是在表單驗證中,驗證一些字符串是否符合要求,如email、手機號等等,學好正則對于前端工程師來說是一個不錯的輔助技能。
圖片來自網絡
一、特殊字符
1、$
正則的結尾符號
2、^
開始符號
3、()
標記一個子表達式的開始和結束位置
4、[]
匹配括號中任意一個; 例:
結果就是true
5、{}
括號里是匹配幾個,一般用來限制位數;例:
匹配位數是4~7位,7個a返回true,8個就false;
有三種用法:
{3}:表示匹配三位;
{3,}:表示匹配三位及以上;
{3,7}:表示匹配3到7位
6、*
表示匹配0次或多次;相當于{0,}
7、?
表示要匹配的是0或1位;
8、+
表示匹配前面的字符串一次或多次
9、.
匹配任意字符
10、|
“或”:不解釋
11、\w
字母、數字、下劃線
12、\W
非字母、數字、下劃線
13、\d
數字,等價于[0-9]
14、\D
非數字,等價于[^0-9]
15、\s
匹配空格
二、js方法
1、match方法:
挑選相匹配的內容:例:
結果是“1,2,3”
2.test方法:
返回一個布爾值,表示是否匹配
上述結果是“true”
3、replace方法:
用于將匹配正則的字符串進行替換,例:
前面//里面是被替換的內容,后面加的字符串是要替換的內容。
例:var path=req.url.replace(/\/?(?:\?.*)?$/,'').toLowerCase();
獲取“/”后邊的路徑。
avaScript正則表達式的深度解析與應用
**一、正則表達式的魅力**
正則表達式,簡稱Regex,是一種強大的字符串處理工具,它能幫助我們快速、準確地匹配、查找、替換復雜的字符串模式。在JavaScript中,正則表達式被賦予了更高的地位,它不僅僅是一個工具,更是一種編程思維。
正則表達式的主要應用場景包括但不限于:表單驗證、文本內容過濾、敏感詞替換、字符串的特定部分提取等。
**二、正則表達式的創建與使用**
在JavaScript中,創建正則表達式有兩種方式:
1. **通過RegExp構造函數**:`var regex=new RegExp('pattern');`
2. **通過字面量方式**:`var regex=/pattern/;`
一旦創建了正則表達式,就可以使用其提供的`test()`方法來檢測字符串是否符合該正則表達式的規則。
**三、正則表達式的核心元素**
正則表達式的強大之處在于其包含的各種特殊字符和元字符,它們賦予了正則表達式豐富的匹配能力。
1. **邊界符**:`^` 和 `$` 分別表示字符串的開始和結束。
2. **字符類**:`[]` 用于定義一組可選的字符,如`[abc]`表示匹配`a`、`b`或`c`中的任何一個字符。
3. **量詞符**:如`*`、`+`、`?`、`{n}`、`{n,}`和`{n,m}`,它們用于指定字符或字符組出現的次數。
4. **預定義類**:如`\d`、`\D`、`\w`、`\W`、`\s`和`\S`,它們提供了對常見字符模式的快速匹配。
**四、正則表達式的替換功能**
正則表達式的另一個強大功能是替換。使用`replace()`方法,可以基于正則表達式匹配到的內容,將字符串中的特定部分替換為其他內容。
`replace()`方法接受兩個參數:第一個參數是要被替換的模式(可以是字符串或正則表達式),第二個參數是替換后的內容。
**五、正則表達式的修飾符**
正則表達式還支持一些修飾符,它們可以改變匹配的行為:
* `g`:全局匹配,即匹配整個字符串中的所有符合條件的內容,而不僅僅是第一個。
* `i`:忽略大小寫,即在匹配時忽略字符的大小寫。
結合使用這兩個修飾符,如`gi`,可以實現全局且不區分大小寫的匹配。
**六、總結**
正則表達式是JavaScript中一個非常強大的工具,它可以幫助我們高效地處理字符串,實現復雜的匹配、查找和替換操作。掌握正則表達式的核心概念和用法,對于提升JavaScript編程能力具有非常重要的意義。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。