一般長這樣
^[0-9]+abc$
使用:
var str = "123abc";
var patt1 = /^[0-9]+abc$/;
document.write(str.match(patt1));
^ 為匹配輸入字符串的開始位置妓布。
$ 為匹配輸入字符串的結(jié)束位置十拣。
一個字符串其實(shí)就是一個簡單的正則表達(dá)式祭饭,例如 Hello World 正則表達(dá)式匹配 "Hello World" 字符串图毕。
實(shí)例
a\s+
a后面可以匹配多個空格
\d+
匹配>=1個數(shù)字
()?
設(shè)置括號內(nèi)的選項(xiàng)是可選的
\.
匹配“.”
^\d+(.\d+)?
可以匹配的實(shí)例:"5", "1.5" 和 "2.21"
.*
任何東西
*
>=0個
+
>=1個
?
0或者1個
注意
當(dāng)惫皱?緊隨(*像樊、+、?旅敷、{n}生棍、{n,}、{n,m})之后時
匹配模式是"非貪心的"(盡可能短的字符串)
"貪心的"模式(盡可能長的字符串)
例如媳谁,在字符串"oooo"中涂滴,"o+?"只匹配單個"o"友酱,而"o+"匹配所有"o"。
{n}
n 是非負(fù)整數(shù)氢妈。=n個
{n,}
n 是非負(fù)整數(shù)粹污。n<= 個
{n,m}
M 和 n 是非負(fù)整數(shù),其中 n <= m首量。n<=個數(shù)<=m
注意:不能將空格插入逗號和數(shù)字之間壮吩。
x|y
匹配x或者y
[xyz]
匹配包含的任一字符
例如,"[abc]"匹配"plain"中的"a"加缘。
[^xyz]
匹配未包含的任何字符
例如鸭叙,"[^abc]"匹配"plain"中"p","l"拣宏,"i"沈贝,"n"。
[a-z]
匹配a-z之間的內(nèi)的任何字符
[^a-z]
匹配不在a-z的任何字符
\b
匹配一個字邊界勋乾,即字與空格間的位置
例如宋下,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er"
\B
非字邊界匹配
"er\B"匹配"verb"中的"er"辑莫,但不匹配"never"中的"er"
\d
[0-9]
\D
不是[0-9]
\w
匹配任何字類字符学歧,包括下劃線。與"[A-Za-z0-9_]"等效
\W
上面取反
捕獲組
public class RegexMatches
{
public static void main( String args[] ){
// 按指定模式在字符串查找
String line = "This order was placed for QT3000! OK?";
String pattern = "(\\D*)(\\d+)(.*)";
// 創(chuàng)建 Pattern 對象
Pattern r = Pattern.compile(pattern);
// 現(xiàn)在創(chuàng)建 matcher 對象
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );//整個表達(dá)式
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
System.out.println("Found value: " + m.group(3) );
} else {
System.out.println("NO MATCH");
}
}
}
得到的結(jié)果
Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000
Found value: ! OK?
特殊
在 Java 中各吨,\ 表示:我要插入一個正則表達(dá)式的反斜線枝笨,所以其后的字符具有特殊的意義。
在 Java 中揭蜒,\ 表示:我要插入一個正則表達(dá)式的反斜線横浑,所以其后的字符具有特殊的意義。
在正則表達(dá)式中屉更,兩個 \ 代表其他語言中的一個 \徙融,
一位數(shù)字的正則表達(dá)式是 \d,一個普通的反斜杠是 \\瑰谜。