在ES5中,RegExp构造函数的参数有两种情况。
第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。
var regex = new RegExp('xyz', 'i'); // 等价于 var regex = /xyz/i;
第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝。
var regex = new RegExp(/xyz/i); // 等价于 var regex = /xyz/i;
正则表达式模式
方括号用于查找某个范围内的字符:
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
(x|y) | 查找任何以 | 分隔的选项。 |
元字符是拥有特殊含义的字符:
元字符 | 描述 |
---|---|
\d | 查找数字。 |
\s | 查找空白字符。 |
\b | 匹配单词边界。 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
量词:
量词 | 描述 |
---|---|
n | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
n$ | 匹配任何结尾为 n 的字符串。 |
^n | 匹配任何开头为 n 的字符串。 |
[^abc] | 查找任何不在方括号之间的字符。 |
正则表达式修饰符
修饰符 可以在全局搜索中不区分大小写:
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
常用正则表达式
/*是否带有小数*/
function isDecimal(strValue ) {
var objRegExp= /^\d \.\d $/;
// ^/d :以若干数字开头 :数字个数大于等于1
//\. : \表示转义字符,则\.为小数点
//\d $:以若干数字结尾
return objRegExp.test(strValue);
}
/*校验是否中文名称组成 */
function ischina(str) {
var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定义验证表达式*/
//匹配一2-4个汉字的写法。 2、这两个unicode值正好是Unicode表中的汉字的头和尾
return reg.test(str); /*进行验证*/
}
/*校验邮件地址是否合法 */
function IsEmail(str) {
var reg=/^(\w) (\.\w )*@\w ((\.\w ) )$/// ^[a-zA-Z0-9] :以字母或数字开头的若干字符
return reg.test(str);
}
/*校验电话码格式 */
function isTelCode(str) {
var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
//8位或者11位电话号码
return reg.test(str);
}
更多专业前端知识,请上 【猿2048】www.mk2048.com