二、當您檢索某個文本時,可以使用一種模式來描寫敘述要檢索的內容。RegExp 就是這樣的模式。javascript
三、簡單的模式可以是一個單獨的字符。html
更復雜的模式包含了不少其它的字符,並可用於解析、格式檢查、替換等等。java
您可以規定字符串中的檢索位置,以及要檢索的字符類型,等等。git
var test = new RegExp("e")
a、直接量語法數組
/pattern/attributes函數
b、建立RegExp對象語法工具
new RegExp(pattern,attributes);spa
參數 pattern 是一個字符串,指定了正則表達式的模式或其它正則表達式。code
參數 attributes 是一個可選的字符串,包括屬性 "g"、"i" 和 "m",分別用於指定全局匹配、區分大寫和小寫的匹配和多行匹配。regexp
一個新的 RegExp 對象,具備指定的模式和標誌。假設參數 pattern 是正則表達式而不是字符串,那麼 RegExp() 構造函數將用與指定的 RegExp 一樣的模式和標誌建立一個新的 RegExp 對象。
假設不用 new 運算符,而將 RegExp() 做爲函數調用,那麼它的行爲與用 new 運算符調用時同樣,僅僅是當 pattern 是正則表達式時,它僅僅返回 pattern,而再也不建立一個新的 RegExp 對象。
修飾符 | 描寫敘述 |
---|---|
i | 運行對大寫和小寫不敏感的匹配。 |
g | 運行全局匹配(查找所有匹配而非在找到第一個匹配後中止)。 |
m | 運行多行匹配。 |
方括號用於查找某個範圍內的字符:
表達式 | 描寫敘述 |
---|---|
[abc] | 查找方括號之間的不論什麼字符。 |
[^abc] | 查找不論什麼不在方括號之間的字符。 |
[0-9] | 查找不論什麼從 0 至 9 的數字。 |
[a-z] | 查找不論什麼從小寫 a 到小寫 z 的字符。 |
[A-Z] | 查找不論什麼從大寫 A 到大寫 Z 的字符。 |
[A-z] | 查找不論什麼從大寫 A 到小寫 z 的字符。 |
[adgk] | 查找給定集合內的不論什麼字符。 |
[^adgk] | 查找給定集合外的不論什麼字符。 |
(red|blue|green) | 查找不論什麼指定的選項。 |
元字符(Metacharacter)是擁有特殊含義的字符:
元字符 | 描寫敘述 |
---|---|
. | 查找單個字符,除了換行和行結束符。 |
\w | 查找單詞字符。 |
\W | 查找非單詞字符。 |
\d | 查找數字。 |
\D | 查找非數字字符。 |
\s | 查找空白字符。 |
\S | 查找非空白字符。 |
\b | 匹配單詞邊界。 |
\B | 匹配非單詞邊界。 |
\0 | 查找 NUL 字符。 |
\n | 查找換行符。 |
\f | 查找換頁符。 |
\r | 查找回車符。 |
\t | 查找製表符。 |
\v | 查找垂直製表符。 |
\xxx | 查找以八進制數 xxx 規定的字符。 |
\xdd | 查找以十六進制數 dd 規定的字符。 |
\uxxxx | 查找以十六進制數 xxxx 規定的 Unicode 字符。 |
量詞 | 描寫敘述 |
---|---|
n+ | 匹配不論什麼包括至少一個 n 的字符串。 |
n* | 匹配不論什麼包括零個或多個 n 的字符串。 |
n? | 匹配不論什麼包括零個或一個 n 的字符串。 |
n{X} | 匹配包括 X 個 n 的序列的字符串。 |
n{X,Y} | 匹配包括 X 或 Y 個 n 的序列的字符串。 |
n{X,} | 匹配包括至少 X 個 n 的序列的字符串。 |
n$ | 匹配不論什麼結尾爲 n 的字符串。 |
^n | 匹配不論什麼開頭爲 n 的字符串。 |
?=n | 匹配不論什麼其後緊接指定字符串 n 的字符串。 |
?!n | 匹配不論什麼其後沒有緊接指定字符串 n 的字符串。 |
二、上次匹配的結果是由方法 RegExp.exec() 和 RegExp.test() 找到的,它們都以 lastIndex 屬性所指的位置做爲下次檢索的起始點。這樣,就可以經過重複調用這兩個方法來遍歷一個字符串中的所有匹配文本。
三、該屬性是可讀可寫的。僅僅要目標字符串的下一次搜索開始,就可以對它進行設置。當方法 exec() 或 test() 再也找不到可以匹配的文本時,它們會本身主動把 lastIndex 屬性重置爲 0。
二、在這樣的模式中,假設要檢索的字符串中含有換行符,^ 和 $ 錨除了匹配字符串的開頭和結尾外還匹配每行的開頭和結尾。
三、假設 m 標誌被設置,則該屬性爲 true,不然爲 false。
<html> <head></head> <body> <script type="text/javascript"> var test="no zuo not to die" part=/no/g document.write(test.replace(part,"bu")+"<br/>") //返回值:bu zuo but to die part.compile(/no(t)?/g) document.write(test.replace(part,"bu")+"<br/>") //返回值:bu zuo bu to die </script> </body> </html>
<html> <head></head> <body> <script type="text/javascript"> var test="no zuo not to die" var part = new RegExp("no","g") var result while((result = part.exec(test)) != null) { document.write(result); document.write("<br/>"); document.write(part.lastIndex); document.write("<br/>"); } </script> </body> </html> 返回值:no 2 no 9
<html> <head></head> <body> <script type="text/javascript"> var test="no zuo not to die" var part = new RegExp("no","g") var result = part.test(test) document.write(result) //返回值:true </script> </body> </html>
<html>
<head>
<script>
function Excgent(r,g){
if(r==""||g=="")
return false
else
{
var part=new RegExp(r);
if(part.exec(g))
return true;
return false
}
}
</script>
</head>
<body>
<h4>僅僅能輸入5-20個以字母開頭、可帶數字、「_」、「.」的字串<h4>
<input type="text" id="a2" style="width:300px;"></input>
<br/>
<button onclick="alert(Excgent('^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$',a2.value))">點擊</button>
<br/>
</body>
</html>
<html>
<head>
<script>
function Excgent(r,g){
if(r==""||g=="")
return false
else
{
var part=new RegExp(r);
if(part.exec(g))
return true;
return false
}
}
</script>
</head>
<body>
<h4>僅僅能輸入數字<h4>
<input type="text" id="a2" style="width:300px;"></input>
<br/>
<button onclick="alert(Excgent('^[0-9]{1,20}$',a2.value))">點擊</button>
<br/>
</body>
</html>
<html>
<head>
<script>
function Excgent(r,g){
if(r==""||g=="")
return false
else
{
var part=new RegExp(r);
if(part.exec(g))
return true;
return false
}
}
</script>
</head>
<body>
<h4>僅僅能1三、159開頭的手機號碼<h4>
<input type="text" id="a2" style="width:300px;"></input>
<br/>
<button onclick="alert(Excgent('^13[0-9]{1}[0-9]{8}|^15[9]{1}[0-9]{8}',a2.value))">點擊</button>
<br/>
</body>
</html>