欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

正則表達(dá)式RegExp語法與用法詳解

 更新時(shí)間:2022年10月09日 10:04:57   作者:朝陽39  
正則表達(dá)式是一個(gè)描述字符模式的對(duì)象,當(dāng)檢索某個(gè)文本時(shí),可以使用一種模式來描述要檢索的內(nèi)容,RegExp就是這種模式,下面這篇文章主要給大家介紹了關(guān)于正則表達(dá)式RegExp語法與用法的相關(guān)資料,需要的朋友可以參考下

正則表達(dá)式的定義和用途

正則表達(dá)式用于定義一些字符串的規(guī)則。計(jì)算機(jī)可以根據(jù)正則表達(dá)式,來檢查一個(gè)字符串是否符合指定的規(guī)則,或者將字符串中符合規(guī)則的內(nèi)容提取出來。

RegExp的意思是 Regular expression。使用typeof檢查正則對(duì)象,會(huì)返回object。

創(chuàng)建正則表達(dá)式

方式一:使用構(gòu)造函數(shù)創(chuàng)建

使用構(gòu)造函數(shù)創(chuàng)建時(shí),更加靈活,因?yàn)閰?shù)中還可以傳遞變量。

	var 變量 = new RegExp("正則表達(dá)式"); // 注意,參數(shù)是字符串
	var 變量 = new RegExp("正則表達(dá)式", "匹配模式"); // 注意,兩個(gè)參數(shù)都是字符串

匹配模式作為第二個(gè)參數(shù)。這個(gè)參數(shù)可以是:

  • i 忽略大小寫。這里的 i 指的是 ignore。
  • g 全局匹配模式。這里的 g 指的是 global。
var reg = new RegExp("a"); // 定義一個(gè)正則表達(dá)式:檢查一個(gè)字符串中是否含有 a
 
var reg = new RegExp('A', 'i');
var str = 'qiangu';
 
console.log(reg.test(str)); // 打印結(jié)果:true

方式二:使用字面量創(chuàng)建

	var 變量 = /正則表達(dá)式/;  // 注意,這個(gè)語法里沒有引號(hào)
 
	var 變量 = /正則表達(dá)式/匹配模式;  // 注意,這個(gè)語法里沒有引號(hào)
	var reg = /A/i; // 定義正則表達(dá)式的規(guī)則:檢查一個(gè)字符串中是否含有 a。忽略大小寫。
	var str = "qiangu";
 
	console.log(typeof reg);  // 打印結(jié)果:object
	console.log(reg.test(str)); // 打印結(jié)果:true

正則表達(dá)式的語法

匹配字符

字符描述
.匹配任意單個(gè)字符除了換行符
[ ][ ] 內(nèi)為字符集,匹配 [ ] 內(nèi)任一字符
[^ ]匹配除了方括號(hào)里的任意字符
*匹配 >= 0 個(gè) * 號(hào)前的字符。
+匹配 >= 1 個(gè)+號(hào)前的字符。
?匹配 0 或 1 個(gè) ?號(hào)前的字符。
{n,m}匹配n到m個(gè)大括號(hào)之前的字符或字符集
(xyz)匹配與 xyz 完全相等的字符串
|或運(yùn)算符,匹配|符號(hào)前或后的字符
\s匹配空格
\轉(zhuǎn)義字符,匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ |
^從開始行開始匹配
$從末端開始匹配
  • /[ab]/ 等價(jià)于 /a|b/:檢查一個(gè)字符串中是否包含 a或b
  • /[a-z]/:檢查一個(gè)字符串那種是否包含任意小寫字母
  • /[A-Z]/:任意大寫字母
  • /[A-z]/:任意字母
  • /[0-9]/:任意數(shù)字
  • /a[bde]c/:檢查一個(gè)字符串中是否包含 abc 或 adc 或 aec
  • [Tt]he 匹配 the 和 The
  • [^c]ar 匹配一個(gè)后面跟著ar的除了c的任意字符,如匹配par,不匹配car
  • [a-z]* 匹配一個(gè)行中所有以小寫字母開頭的字符串。
"[a-z]*" => The car parked in the garage

c.+t 匹配以首字母c開頭以t結(jié)尾,中間跟著至少一個(gè)字符的字符串

"c.+t" => The fat cat sat on the mat
  • [T]?he 匹配字符串 he 和 The
  • [0-9]{2,3} 匹配最少 2 位最多 3 位 0~9 的數(shù)字
  • 可以省略第二個(gè)參數(shù)。 例如,[0-9]{2,} 匹配至少兩位 0~9 的數(shù)字。
  • 逗號(hào)也省略掉則表示重復(fù)固定的次數(shù)。 例如,[0-9]{3} 匹配3位數(shù)字
  • (c|g|p)ar 匹配 car 或 gar 或 par
  • "(f|c|m)at\.?" => The fat cat sat on the mat.
  • "(T|t)he" => The car is parked in the garage.
  • "^(T|t)he" => The car is parked in the garage.

簡(jiǎn)寫

簡(jiǎn)寫描述
\w匹配所有字母數(shù)字,等同于 [a-zA-Z0-9_]
\W匹配所有非字母數(shù)字,即符號(hào),等同于: [^\w]
\d匹配數(shù)字: [0-9]
\D匹配非數(shù)字: [^\d]
\s匹配所有空格字符,等同于: [\t\n\f\r\p{Z}]
\S匹配所有非空格字符: [^\s]
\f匹配一個(gè)換頁符
\n匹配一個(gè)換行符
\r匹配一個(gè)回車符
\t匹配一個(gè)制表符
\v匹配一個(gè)垂直制表符
\p匹配 CR/LF(等同于 \r\n),用來匹配 DOS 行終止符

模式修正符

標(biāo)志描述
i忽略大小寫。
g全局搜索。
m多行修飾符:錨點(diǎn)元字符 ^ $ 工作范圍在每行的起始。
  • "/The/gi" => The fat cat sat on the mat.
  • "/.(at)/g" => The fat cat sat on the mat.
  • (^,$) 用于檢查格式是否是在待檢測(cè)字符串的開頭或結(jié)尾。但我們?nèi)绻胍诿啃械拈_頭和結(jié)尾生效,我們需要用到多行修飾符 m。

貪婪匹配

正則表達(dá)式默認(rèn)采用貪婪匹配模式,在該模式下意味著會(huì)匹配盡可能長(zhǎng)的子串。

"/(.*at)/" => The fat cat sat on the mat.

惰性匹配

使用 ? 將貪婪匹配模式轉(zhuǎn)化為惰性匹配模式。

"/(.*?at)/" => The fat cat sat on the mat.

斷言

符號(hào)描述
?=正先行斷言-存在
?!負(fù)先行斷言-排除
?<=正后發(fā)斷言-存在
?<!負(fù)后發(fā)斷言-排除
  • 定義一個(gè)正先行斷言要使用 ()。在括號(hào)內(nèi)部使用一個(gè)問號(hào)和等號(hào): (?=...)。正先行斷言的內(nèi)容寫在括號(hào)中的等號(hào)后面。 例如,表達(dá)式 (T|t)he(?=\sfat) 匹配 The 和 the,在括號(hào)中我們又定義了正先行斷言 (?=\sfat) ,即 The 和 the 后面緊跟著 (空格)fat。
"(T|t)he(?=\sfat)" => The fat cat sat on the mat.
  • 負(fù)先行斷言 ?! 用于篩選出其后不跟隨斷言中定義的格式。表達(dá)式 (T|t)he(?!\sfat) 匹配 The 和 the,且其后不跟著 (空格)fat。
"(T|t)he(?!\sfat)" => The fat cat sat on the mat.
  • 正后發(fā)斷言 記作(?<=...) 用于篩選所有匹配結(jié)果,篩選條件為 其前跟隨著斷言中定義的格式。 例如,表達(dá)式 (?<=(T|t)he\s)(fat|mat) 匹配 fat 和 mat,且其前跟著 The 或 the。
"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat.
  • 負(fù)后發(fā)斷言 記作 (?<!...) 用于篩選所有匹配結(jié)果,篩選條件為 其前不跟隨著斷言中定義的格式。 例如,表達(dá)式 (?<!(T|t)he\s)(cat) 匹配 cat,且其前不跟著 The 或 the。
"(?<!(T|t)he\s)(cat)" => The cat sat on cat.

正則表達(dá)式的使用

判斷字符串是否符合規(guī)則 test()

符合則返回true,否則返回false。

  var reg = /[^ab]/; // 規(guī)則:字符串中,除了a、b之外,還有沒有其他的字符內(nèi)容?
  var str = "acb";
 
  console.log(reg.test(str)); // 打印結(jié)果:true
	var reg = /[^0-9]/;  // 規(guī)則:字符串中,除了數(shù)字之外,還有沒有其他的內(nèi)容?
	var str1 = "1991";
	var str2 = "199a1";
 
	console.log(reg.test(str1)); // 打印結(jié)果:false (如果字符串是 純數(shù)字,則返回 false)
	console.log(reg.test(str2)); // 打印結(jié)果:true

搜索第一個(gè)符合條件的字符串 search()

search()【只會(huì)查找第一個(gè)】——搜索字符串中是否含有指定內(nèi)容。如果搜索到指定內(nèi)容,則會(huì)返回第一次出現(xiàn)的索引;否則返回-1。

	var str = "hello abc hello aec afc";
	// 搜索字符串中是否含有abc 或 aec 或 afc
	result = str.search(/a[bef]c/);
	console.log(result); // 打印結(jié)果:6

搜索所有符合條件的字符串 match()

從一個(gè)字符串中將符合條件的內(nèi)容提取出來,封裝到一個(gè)數(shù)組中返回(即使只查詢到一個(gè)結(jié)果)。

默認(rèn)情況下,match()方法只會(huì)找到第一個(gè)符合要求的內(nèi)容,設(shè)置正則表達(dá)式為全局匹配模式,這樣就會(huì)匹配到所有的內(nèi)容,并以數(shù)組的形式返回。

可以為一個(gè)正則表達(dá)式設(shè)置多個(gè)匹配模式,且匹配模式的順序無所謂。

	var str = "1a2a3a4a5e6f7A8B9C";
 
	var result1 = str.match(/[a-z]/);   // 找到符合要求的第一個(gè)內(nèi)容,然后返回
	var result2 = str.match(/[a-z]/g);  // 設(shè)置為“全局匹配”模式,匹配字符串中 所有的小寫字母
	var result3 = str.match(/[a-z]/gi); // 設(shè)置多個(gè)匹配模式,匹配字符串中 所有的字母(忽略大小寫)
 
	console.log(result1); // 打印結(jié)果:["a"]
	console.log(result2); // 打印結(jié)果:["a", "a", "a", "a", "e", "f"]
	console.log(result3); // 打印結(jié)果:["a", "a", "a", "a", "e", "f", "A", "B", "C"]

字符串拆分成數(shù)組 split()

	var str = "1a2b3c4d5e6f7g";
	var result = str.split(/[A-z]/); // 參數(shù)是一個(gè)正則表達(dá)式:表示所有字母
	console.log(result); //  ["1", "2", "3", "4", "5", "6", "7", ""]

 字符串替換 replace()

默認(rèn)只會(huì)替換第一個(gè),如果需要替換全部符合條件的內(nèi)容,可以設(shè)置正則表達(dá)式為全局匹配模式。

let str1 = '2020/5/20'
console.log(str1.replace(/\//g,"-"));  //得到 2020-5-20
   
var str2 = "Today is fine day,today is fine day !!!"
console.log(str2.replace("today","tomorrow"));  //只能替換第一個(gè)today
console.log(str2.replace(/today/gi,"tomorrow")); //這里用到了正則,且為“全局匹配”模式,才能替換所有的today

過濾HTML標(biāo)簽 

str.replace(/<.*?>/g, "") 

去除空格

	str = str.replace(/^\s*/, ""); //去除開頭的空格
 
	str = str.replace(/\s*$/, ""); //去除結(jié)尾的空格

常用正則表達(dá)式

常用正則表達(dá)式大全

最全的常用正則表達(dá)式大全——包括校驗(yàn)數(shù)字、字符、一些特殊的需求等等

非零數(shù)字(只能輸入數(shù)字,但值不能為0,可以是00,01等)

/^([0]{2}|0[1-9]|[1-9])\d*$/

驗(yàn)證保留兩位小數(shù)的正整數(shù)或0

/^([1-9]\d*|0)(\.\d{1,2})?$/

驗(yàn)證手機(jī)號(hào)碼,如13908653654

/^(1[3|5|7|8][0-9]{9})$/

驗(yàn)證固定號(hào)碼,如010-86551122或01086551122

/^((0\d{2,3})[-]?)(\d{7,8})([-]?(\d{3,}))?$/

 驗(yàn)證電話號(hào)碼—手機(jī)號(hào)碼或固定號(hào)碼,如13908653654或010-86551122或01086551122

/(^(1[3|5|7|8][0-9]{9})$)|(^((0\d{2,3})[-]?)(\d{7,8})([-]?(\d{3,}))?$)/

驗(yàn)證一代身份證號(hào)碼

/^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$/

驗(yàn)證二代身份證號(hào)碼

/^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}[\dXx]$/

驗(yàn)證通用身份證號(hào)碼

/(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/

總結(jié)

到此這篇關(guān)于正則表達(dá)式RegExp語法與用法的文章就介紹到這了,更多相關(guān)正則表達(dá)式RegExp詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論