正则表达式是由一个字符序列形成的搜索模式。可以是一个简单的字符,或一个更复杂的模式。
语法
/正则表达式主体/修饰符
修饰符为可选项
修饰符
- i : 搜索不区分大小写
- g :执行全局匹配(查找所有的匹配项,非找到第一个匹配后停止)
- m :执行多行匹配
正则表达式主体
- 方括号(查找某个范围的字符)
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
(x|y) | 查找任何以 | 分隔的选项。 |
- 元字符(拥有特殊含义的字符)
元字符 | 描述 |
---|---|
\d | 查找数字 |
\w | 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]” |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v] |
- 限定符
字符 | 描述 |
---|---|
* | 匹配前面的子表达式零次或多次 |
+ | 匹配前面的子表达式一次或多次,等价于 {1,}。 |
? | 匹配前面的子表达式零次或一次。等价于 {0,1}。 |
{n} | n 是一个非负整数。匹配确定的 n 次 |
{n,} | n 是一个非负整数。至少匹配n 次,’o{0,}’ 则等价于 ‘o*’ |
{n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。,’o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格 |
- 定位符
字符 | 描述 |
---|---|
^ | 匹配输入字符串开始的位置 |
$ | 匹配输入字符串结尾的位置 |
\b | 匹配一个字边界,即字与空格间的位置。 |
\B | 非字边界匹配。 |
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符
^[a-z] 以字符a-z为开头
- 特殊字符
字符 | 描述 |
---|---|
\ | 转义符。将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n’ 匹配字符 ‘n’。’\n’ 匹配换行符。序列 ‘\\’ 匹配 “\”,而 ‘\(’ 则匹配 “(“ |
{ | 标记限定符表达式的开始 |
| | 指明两项之间的一个选择 |
方法
1.使用字符串方法
在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。
- search() 方法:用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
var str = "Visit Runoob!";
var n = str.search("Runoob");
- replace() 方法:用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
var str = document.getElementById("demo").innerHTML;
var txt = str.replace(/microsoft/i,"Runoob");
2.正则表达式方法
- test():方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
var patt = /e/;
patt.test("The best things in life are free!");
- exec() :方法用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
/e/.exec("The best things in life are free!");
实例
1.校验用户姓名:只能输入1-30个以字母开头的字串
2.校验密码:只能输入6-20个字母、数字、下划线
3.校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串。
1./^([A-Z]|[a-z])\w{0,29}$/
2./^([0-9]|[A-Z]|[a-z]|_){6,20}$/
3./^([A-Z]|[a-z])([0-9]|_|.){0,19}$/