javascript正则表达式从0开始学习
2014-04-18 18:29
260 查看
正则表达式在js中主要是对字符串进行匹配,常用在输入验证方面,如邮箱,手机号等。比起循环的判断字符串中的每一个字符,正则表达式往往更能节省性能,并起到事半功倍的效果。以下开始js正则的学习之路。
1.字面量表示:
/ab/i ---由两个/组成
2.RegExp构造函数:
var reg =new RegExp(“ab“,”i“); ----同1的效果
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第三种就是m,表示执行多行匹配,没有大的用处。
i:
例如测试字符串“Abc”中是否含有“ab”
不加i ---------- document.write("/ab/".test("Abc")) ; //false;
加i ----------- document.write("/ab/i".test("Abc")) ; /true/; 加上i后输出就为true了,即忽略了“ab”的大写方式。
g:
例如将字符串”a b c“中的空格替换为$符
不加g ---------- document.write("a b c".replace(/\s/,"$")); //a$b c 其中\s代表空格,结果是只替换了第一个就停止了
加g ----------- document.write("a b c".replace(/\s/g,"$")); //a$b$c 加上g后的效果是将字符串”a b c“中的所有空格都替换了,(注意replace里的正则并没有加引号)。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. exec(string):
检索字符串中正则匹配的值。
返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
例如: /ab/.exec("1a2d") // null
2. test(string):
检索字符串中是否包含正则匹配的值。
返回 true 或 false。
例如: /ab/.test("1abd") // true 测试字符创“1abd”中是否包含字符串“ab”
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. search(RegExp):
检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
返回第一个字符的位置,没有找到则返回-1
例如:
"abcdefgbc12".search(/bc/) // 1 从字符创“abcdefg” 中检索“bc”,找到”bc“出现的第一个位置是1(注意,search只要找到第一个就会返回,而不管有几处都能匹配)
"abcdefgbc12".search(/bc34/) //-1 从字符创“abcdefg” 中检索“bc12”,没有找到“bc12”,所以返回-1
2. match(RegExp):
在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。http://write.blog.csdn.net/postedit/21075889
返回匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。
例如:
"abcdefgbc12".match(/bc/) // [bc] 返回匹配“bc”返回的数组,因为RegExp没有g标志,所以返回bc
"abcdefgbc12".match(/bc/g) // [bc,bc] 返回匹配“bc”返回的数组,因为RegExp有g标志,所以返回所有的匹配
"abcdefgbc12".match(/bc5/) //null 没有匹配到bc5,返回null
3. replace(RegExp):
用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
返回经过替换后的新字符串
例如:
"123@456@7".replace(/@/g,"!") // 123!456!7 将"123@456@7"中的所有“@”字符替换为 “!”
"123@456@7".replace(/!/g,"@") // 123!456!7 将"123@456@7"中的所有“!”字符替换为 “@”,因为没有找到@,所以返回原字符串
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/^b/.test("bac") [b]//true[/b]
n+ :匹配任何包含至少一个 n 的字符串。
/b+/.test("abbc")
//true
[b]n* :[/b]匹配任何包含零个或多个
n 的字符串。
/ab*/.test("aac") //true
[b][b]/ab*/.test("[b]cbbbac") //true[/b][/b]
[/b]
[b][b]n? :[/b]匹配任何包含零个或一个 n 的字符串。[/b]
/ab?c/.test("ac") //true [b]
因为a后面的b[/b]为0个
/ab?c/.test("abbc") //false 因为a后面的b超过了一个所以为false,如果将?换成*或+,则结果为true
[b][b]n$ :匹配任何结尾为 n 的字符串。[/b][/b]
[b][b]/ab$/.test("eeeeeab") //true
[/b][/b]
[b][b][b]/ab$/.test("eeeeeabc")[/b][/b][/b]//false,因为ab并不是结尾[b][/b]
[b][b]n{x} :匹配包含 X 个 n 的序列的字符串。[/b][/b]
[b] /ab{4}/.test("eeeeeabbbba") [b][b][b]//true
[/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b]/ab{4}/.test("ab[b]bbbb") [b][b]//true[b]为什么该字符串里有5个b,执行结果也是true,是因为只要包含x个b即可,即使后面还有b[/b][/b][/b][/b][/b][/b][/b][/b]
[/b][/b][/b][/b][/b]
[b][b][b][b]n{x,} :匹配至少包含 X 个 n 的序列的字符串。[/b][/b][/b][/b]
[b] [b][b]/ab{4}/.test("ab[b]bbbb") [b][b]//true[/b][/b][/b][/b]
[/b][/b]
[b][b][b][b]n{x,y} :匹配至少包含 X 个 n 或y个n的字符串。[/b][/b][/b][/b]
[b] [b][b]/ab{2[b],4}/.test("abbc") [b][b]//true[/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b]/ab{4,2}/.test("abbc")[/b]
//[/b][/b][/b][/b][/b][/b][/b]SyntaxError: Invalid regular expression: /ab{4,2}/: numbers out of order in {} quantifier.
[b][b][b][b][b][b][b]//[/b][/b][/b][/b][/b][/b][/b]这是实际测试结果,说明x必须大于或等于y,而不能小于y
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[b][b][b][b][ abcd ] :查找方括号之间的任何字符。[/b][/b][/b][/b]
/[ab]/.test("12b") [b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][/b][/b][/b][/b][/b]/[ab]/.test("12a") [b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b]
/[ab]/.test("12a34b") [b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b]
[b][b][b][b][^abcd ] :查找任何不在方括号之间的任何字符。[/b][/b][/b][/b]
[b][b][b] [/b][/b][/b]/[^ab]/.test("ab") [b][b][b][b][b][b]//fasle[/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b]/[^ab]/.test("acb") [b][b][b][b][b][b][b]//true
因为c不[b]既不是a,也不是b[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][a-f] :中间加上- 则代表范围,该表达式为a到f。[/b][/b][/b][/b]
[b][b][b] [/b][/b][/b]/[a-f]/.test("Dghi") [b][b][b][b][b][b]//fasle
D不在该范围,如果改成[b][b][/b]/[a-f]/i.test("Dghi"),即不区分大小写,则结果为true[/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b]/[a-f]/.test("eghi") [b][b][b][b][b][b][b]//[b]true[/b][/b][/b][/b][/b][/b][/b]
因为e在a到f的范围内[/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b]常用的有:[/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b]/[a-z]/
小写a到小写z[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]单一字符[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b],[b][b][b][b][b][b][b]/[A-Z]/
大写A到大写Z[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]单一字符[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b],[b][b][b][b][b][b][b]/[0-9]/
0到9[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]单一字符[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b],
[a-zA-Z] 大小写单一字符
大写字母的顺序是在小写字母前面的,所以[A-g]是正确的,[a-G]则会报错
[b][b][b][b]| :单竖线代表或者, 匹配的要么是该符号左边的子表达式,要么它右边的子表达式,即|的左边和右边分别是一个整体。[/b][/b][/b][/b]
/ab|cd/.test("1ab23") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
/ab|cd/.test("ac")
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]//false[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b]( ):小括号代表子匹配[/b][/b][/b][/b]
/(ab)/.test("1ab23") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]/(ab)ef/.test("1ab23") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//false[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/./.test("%")
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b],如果需要匹配单个.怎么办,需要用到下方的转义字符
[b][b][b][b]\ :转义字符,对一些有特殊意义的字符转义,使能匹配到特殊字符,[/b][/b][/b][/b]
[b][b][b][b] [/b][/b][/b][/b]/\./.test("%") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//[b]false因为%不是.,此处的.已经被转义,不是任意字符[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]/\./.test("[b].abc") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//true [/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b]\s :小s代表空格[/b][/b][/b][/b]
[b][b][b][b]
/[b]ab\s2/.test("1ab 2") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//[b]true[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b]
[/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]\S :大S代表非空格[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]/[b]ab\S2/.test("1ab
2")
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]//[b]false[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]\d :匹配数字[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]\d :匹配非数字[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]\w :匹配单词字符(下划线,数字或字母)[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]\W :匹配非单词字符[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
所以先简单按字面意思写一个
[/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
书写方式:
1.字面量表示:
/ab/i ---由两个/组成 /pattern/attributes
2.RegExp构造函数:
var reg =new RegExp(“ab“,”i“); ----同1的效果new RegExp(pattern, attributes);
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
修饰符:
对于上面的两种定义方式,其中字符i即为修饰符的一种,js正则修饰符共有三种i | 忽略大小写 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
i:
例如测试字符串“Abc”中是否含有“ab”
不加i ---------- document.write("/ab/".test("Abc")) ; //false;
加i ----------- document.write("/ab/i".test("Abc")) ; /true/; 加上i后输出就为true了,即忽略了“ab”的大写方式。
g:
例如将字符串”a b c“中的空格替换为$符
不加g ---------- document.write("a b c".replace(/\s/,"$")); //a$b c 其中\s代表空格,结果是只替换了第一个就停止了
加g ----------- document.write("a b c".replace(/\s/g,"$")); //a$b$c 加上g后的效果是将字符串”a b c“中的所有空格都替换了,(注意replace里的正则并没有加引号)。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RegExp 对象方法:
方法的参数为String,调用者为RegExp(因为方法是属于RegExp对象的,所以RegExp为调用者)1. exec(string):
检索字符串中正则匹配的值。
返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
例如: /ab/.exec("1a2d") // null
2. test(string):
检索字符串中是否包含正则匹配的值。
返回 true 或 false。
例如: /ab/.test("1abd") // true 测试字符创“1abd”中是否包含字符串“ab”
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
String对象的与正则相关的方法:
方法的参数为RegExp,调用者为String(因为方法是属于String对象的,所以String为调用者)1. search(RegExp):
检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
返回第一个字符的位置,没有找到则返回-1
例如:
"abcdefgbc12".search(/bc/) // 1 从字符创“abcdefg” 中检索“bc”,找到”bc“出现的第一个位置是1(注意,search只要找到第一个就会返回,而不管有几处都能匹配)
"abcdefgbc12".search(/bc34/) //-1 从字符创“abcdefg” 中检索“bc12”,没有找到“bc12”,所以返回-1
2. match(RegExp):
在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。http://write.blog.csdn.net/postedit/21075889
返回匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。
例如:
"abcdefgbc12".match(/bc/) // [bc] 返回匹配“bc”返回的数组,因为RegExp没有g标志,所以返回bc
"abcdefgbc12".match(/bc/g) // [bc,bc] 返回匹配“bc”返回的数组,因为RegExp有g标志,所以返回所有的匹配
"abcdefgbc12".match(/bc5/) //null 没有匹配到bc5,返回null
3. replace(RegExp):
用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
返回经过替换后的新字符串
例如:
"123@456@7".replace(/@/g,"!") // 123!456!7 将"123@456@7"中的所有“@”字符替换为 “!”
"123@456@7".replace(/!/g,"@") // 123!456!7 将"123@456@7"中的所有“!”字符替换为 “@”,因为没有找到@,所以返回原字符串
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
正则的量词匹配
^n :匹配任何以n开头的字符串。/^b/.test("bac") [b]//true[/b]
n+ :匹配任何包含至少一个 n 的字符串。
/b+/.test("abbc")
//true
[b]n* :[/b]匹配任何包含零个或多个
n 的字符串。
/ab*/.test("aac") //true
[b][b]/ab*/.test("[b]cbbbac") //true[/b][/b]
[/b]
[b][b]n? :[/b]匹配任何包含零个或一个 n 的字符串。[/b]
/ab?c/.test("ac") //true [b]
因为a后面的b[/b]为0个
/ab?c/.test("abbc") //false 因为a后面的b超过了一个所以为false,如果将?换成*或+,则结果为true
[b][b]n$ :匹配任何结尾为 n 的字符串。[/b][/b]
[b][b]/ab$/.test("eeeeeab") //true
[/b][/b]
[b][b][b]/ab$/.test("eeeeeabc")[/b][/b][/b]//false,因为ab并不是结尾[b][/b]
[b][b]n{x} :匹配包含 X 个 n 的序列的字符串。[/b][/b]
[b] /ab{4}/.test("eeeeeabbbba") [b][b][b]//true
[/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b]/ab{4}/.test("ab[b]bbbb") [b][b]//true[b]为什么该字符串里有5个b,执行结果也是true,是因为只要包含x个b即可,即使后面还有b[/b][/b][/b][/b][/b][/b][/b][/b]
[/b][/b][/b][/b][/b]
[b][b][b][b]n{x,} :匹配至少包含 X 个 n 的序列的字符串。[/b][/b][/b][/b]
[b] [b][b]/ab{4}/.test("ab[b]bbbb") [b][b]//true[/b][/b][/b][/b]
[/b][/b]
[b][b][b][b]n{x,y} :匹配至少包含 X 个 n 或y个n的字符串。[/b][/b][/b][/b]
[b] [b][b]/ab{2[b],4}/.test("abbc") [b][b]//true[/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b]/ab{4,2}/.test("abbc")[/b]
//[/b][/b][/b][/b][/b][/b][/b]SyntaxError: Invalid regular expression: /ab{4,2}/: numbers out of order in {} quantifier.
[b][b][b][b][b][b][b]//[/b][/b][/b][/b][/b][/b][/b]这是实际测试结果,说明x必须大于或等于y,而不能小于y
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
正则的范围匹配
范围匹配主要是采用[ ],如下[b][b][b][b][ abcd ] :查找方括号之间的任何字符。[/b][/b][/b][/b]
/[ab]/.test("12b") [b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][/b][/b][/b][/b][/b]/[ab]/.test("12a") [b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b]
/[ab]/.test("12a34b") [b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b]
[b][b][b][b][^abcd ] :查找任何不在方括号之间的任何字符。[/b][/b][/b][/b]
[b][b][b] [/b][/b][/b]/[^ab]/.test("ab") [b][b][b][b][b][b]//fasle[/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b]/[^ab]/.test("acb") [b][b][b][b][b][b][b]//true
因为c不[b]既不是a,也不是b[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][a-f] :中间加上- 则代表范围,该表达式为a到f。[/b][/b][/b][/b]
[b][b][b] [/b][/b][/b]/[a-f]/.test("Dghi") [b][b][b][b][b][b]//fasle
D不在该范围,如果改成[b][b][/b]/[a-f]/i.test("Dghi"),即不区分大小写,则结果为true[/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b]/[a-f]/.test("eghi") [b][b][b][b][b][b][b]//[b]true[/b][/b][/b][/b][/b][/b][/b]
因为e在a到f的范围内[/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b]常用的有:[/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b]/[a-z]/
小写a到小写z[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]单一字符[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b],[b][b][b][b][b][b][b]/[A-Z]/
大写A到大写Z[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]单一字符[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b],[b][b][b][b][b][b][b]/[0-9]/
0到9[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]单一字符[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b],
[a-zA-Z] 大小写单一字符
大写字母的顺序是在小写字母前面的,所以[A-g]是正确的,[a-G]则会报错
[b][b][b][b]| :单竖线代表或者, 匹配的要么是该符号左边的子表达式,要么它右边的子表达式,即|的左边和右边分别是一个整体。[/b][/b][/b][/b]
/ab|cd/.test("1ab23") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
/ab|cd/.test("ac")
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]//false[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b]( ):小括号代表子匹配[/b][/b][/b][/b]
/(ab)/.test("1ab23") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]/(ab)ef/.test("1ab23") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//false[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
正则的元字符匹配
[b][b][b][b]. :代表任意字符[/b][/b][/b][/b]/./.test("%")
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]//true[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b],如果需要匹配单个.怎么办,需要用到下方的转义字符
[b][b][b][b]\ :转义字符,对一些有特殊意义的字符转义,使能匹配到特殊字符,[/b][/b][/b][/b]
[b][b][b][b] [/b][/b][/b][/b]/\./.test("%") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//[b]false因为%不是.,此处的.已经被转义,不是任意字符[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]/\./.test("[b].abc") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//true [/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b]\s :小s代表空格[/b][/b][/b][/b]
[b][b][b][b]
/[b]ab\s2/.test("1ab 2") [b][b][b][b][b][b][b][b][b][b][b][b][b][b]//[b]true[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b]
[/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]\S :大S代表非空格[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]/[b]ab\S2/.test("1ab
2")
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]//[b]false[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]\d :匹配数字[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]\d :匹配非数字[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]\w :匹配单词字符(下划线,数字或字母)[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b]\W :匹配非单词字符[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
常用的一些字符做一下解析
验证手机号(国内的):
/^[1][3|5][0-9]{9}$/[b] 以1开头,并且之后紧接着3或者5,然后是9个0到9的数字[/b]
验证输入是否只有数字,字母或下划线组成:
/^[/b][0-9a-zA-Z\_]+$/[b]
验证邮箱:
目前网上给的各种验证邮箱的例子不一致,所以在此只做个思路的分析,之后发现更好地再贴上,
邮箱的格式应该是 多个字符(数字或_)@
多个字符(数字或_).
多个字符结尾
所以先简单按字面意思写一个
/^\.[b][0-9a-zA-Z\_]+@[b]
[0-9a-zA-Z\_]+
[b][a-zA-Z]+
[/code][/b][/b]$/[/b]
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
相关文章推荐
- 从零开始学习前端JAVASCRIPT — 9、JavaScript基础RegExp(正则表达式)
- java正则表达式学习总结,以及和javascript正则表达式的区别
- javascript 正则表达式学习
- 【前端学习笔记】Javascript中的正则表达式-实例
- 深入浅出的javascript的正则表达式学习教程
- JavaScript学习总结(八)正则表达式
- JavaScript学习1:正则表达式
- JavaScript学习笔记-正则表达式(RegExp对象)
- 【学习】Javascript正则表达式——基础知识小结
- accp6.0 《使用javascript增强交互效果》学习笔记ch7 正则表达式和表单辅助特效
- 学习 Javascript 正则表达式(一)————使用正则表达式对String对象解析
- 深入浅出的javascript的正则表达式学习教程
- JavaScript学习笔记(2) -基本封装类型和正则表达式
- 正则表达式学习-JavaScript RegExp 对象
- 正则表达式(javascript)学习总结
- 学习JavaScript正则表达式
- javascript正则表达式 学习笔记
- javascript的正则表达式学习资料复习
- JavaScript学习总结(八)正则表达式
- javascript中正则表达式应用学习_match()