在开发Web程序时,在表示层(View)老是会碰到关于数据验证的场合。 而解决这种验证的最好方式无疑是使用正则表达式。 以前在JAVA中使用过正则表达式, 但是还从未在JS中使用过正则表达式, 今天学习了一下......
JS提供了两种方式来构造正则表达式
(一) 使用文本符号来创建正则表达式对象, 创建格式如下:
var testObj = /regular expression/options; regular expression为制定正则表达式的文本,options指定在进行模式匹配时用到的一些特性。 简单示例:
var testObj = /java/g;
options有3个选项:
g : 指定在进行模式匹配时匹配目标字符串中所有的符合正则表达式的子串
i : 指定匹配时大小写不敏感
m: 指定可以在多行中匹配。
(二) 使用RegExp对象
var regexObj = new RegExp("regular expression", "options");
简单示例:
var regex = new RegExp("/java", "g");
RegExp对象中有两个方法用来匹配模式:
(1) exec(String str): 在给定的字符串上依据限定的正则表达式执行一次匹配, 返回一个字符串数组,这个数组有一个index属性来指示本次匹配的子串开始的位置。 如果没有找到任何匹配的子串, 就返回null; 否则返回包含本次匹配子串的数组。
(2) test(String str): 尝试在给定的字符串上依据给定的正则表达式执行一次匹配, 如匹配成功返回true,否则返回false。
RegExp对象的其他一些属性
lastIndex : 当RegExp对象的g选项有效时, 指示上一次匹配后的字符位置, 也就是下一次匹配开始的位置。可读写属性
source : 正则表达式的原文本, 只读属性
global : 指示RegExp对象的g属性是否有效, 即是否匹配所有符合正则表达式的子串, 只读属性
ignoreCase : 指定i是否有效, 只读属性
multiline : 指定m是否有效, 只读属性。
——————JS 的String 对象对正则表达式也提供支持
match(RegExp regex) 或 match(regular expression). : 效果与exec(String str):等同, 返回数组
replace(RegExp sourceRegex, replacement) 或 replace(source regular expression, replacement): 返回替换后的新字符串。replacement是一个字符串可以包含正则表达式,如果正则表达式的resource的g选项有效,那么则替换所有的子串,否则只替换第一个。
search(RegExp regex) 或 search(regular expression ): 返回首次匹配的子串的开开始字符位置, 如果没有任何匹配则返回-1
split(RegExp regex) 或 split(regular expression) : 以匹配正则表达式的子串为边界, 将字符串分割成若干个子串, 返回包含这些子串的数组。