JS中的正则表达式

来源:互联网 发布:h5斗地主源码 编辑:程序博客网 时间:2024/05/17 22:18
1.正则表达式:
  a.测试字符串的某个模式,即数据有效性验证。
  b.实现按照某种规则替换文本。
  c.根据模式匹配从字符串提取一个子字符串。

--------------------------------------------------------------------------

2.JS正则表达式对象创建方式

(1)使用RegExp对象的显示构造函数,语法为:new RegExp("pattern"[,"flags"])

(2)使用RegExp对象的隐式构造函数,采用纯粹的文本格式:/pattern/[flags]

-------------------------------------------------------------------------

3.flags标志字符:
   - g 用作全局标志
   - i 用作忽略大小写标志
   - m 用作多行标志

       如果没有设置这个标志,那么元字符“^”只与整个被搜索字符串的开始位置相匹配,而元字符“$”只与整个被搜索字符串的结束位置相匹配。如果设置了这个标志,那么“^”还可       以与被搜索字符串中的“\n”或“\r”之后的位置(即下一行的行首)相匹配,而“$”还可以与被搜索字符串中的“\n”或“\r”之前的位置(即一行的行尾)相匹配。


     * 注意事项:当使用显示构造函数的方式创建RegExp实例对象的时候,应将原始的正则表达式模式文本中的每个“\”都使用“\\”来替换,例如,下面的两条语句是等价的:
    var re=new RegExp("\\d{5}");

    var re=/d{5}/;

--------------------------------------------------------------------

4.正则语法:
 \     :转义
 ^:   :匹配输入字符串的开始位置
 $:   :匹配输入字符串的结束位置
 *:   :匹配前面的子表达式零次或多次。例如,zo* 
 +:   :匹配前面的子表达式一次或多次。例如,zo+
 ?:   :匹配前面的子表达式零次或一次。例如,do?
 {n}   :n 是一个非负整数。匹配确定的 n 次。例如,o{2} 
 {n,}  :n 是一个非负整数。至少匹配n 次。例如,o{2,}
 {n,m} :m 和n 均为非负整数,其中n<=m 。最少匹配 n 次且最多匹配 m 次。例如 :o{1,3} 
  x|y  :匹配 x 或 y。例如,z|food 
 [xyz] :字符集合。匹配所包含的任意一个字符。例如:[abc]
 [^xyz]:负值字符集合。匹配未包含的任意字符。例如:[^abc] 
 [a-z] :字符范围。匹配指定范围内的任意字符 
 [^a-z]:负值字符范围。匹配任何不在指定范围内的任意字符 
  \b   :匹配一个单词边界。例如: er\b 可以匹配"never"
  \B   :匹配非单词边界。 
  \d   :匹配一个数字字符。等价于 [0-9]。 
  \B   :匹配非单词边界。 
  \d   :匹配一个数字字符。等价于 [0-9]。 
  \D   :匹配一个非数字字符。等价于 [^0-9] 
  \n   :匹配一个换行符 
  \r   :匹配一个回车符 
  \s   :匹配任何空白字符 
  \S   :匹配任何非空白字符 
  .    :匹配除 "\n" 之外的任何单个字符 

----------------------------------------------------------------------
5.正则表达式对象的方法:
   exec   在字符串中运行查找,并返回包含该查找结果的一个数组 
   test   返回一个 Boolean 值,被查找的字符串中是否存在某模式 
   search 返回与正则表达式查找内容匹配的第一个子字符串的位置 
   split  按特定字符串将原字符串拆分成数组 

   match   在字符串中执行查找,并将包含查找的结果作为数组返回 

  a.在字符串中执行查找

  exec 方法:String[ ] exec(String source)
例如:
function isDigit(s){
var reg = /^[0-9]{1,20}$/;
var result = reg.exec(s);
//如果格式正确,返回原字符串,否则返回null
alert(result);
}

  b.在字符串中执行查找
  match 方法:String[] match(String reg)
        例如:
            function demoMatch(str){
               var regExp = /^[a-z]{3,20}/;
               var result = str.match(regExp);
               alert(result);
            }
      这里如果不限制次数,则只返回第一个字母,不符合格式,返回null

  c.执行模式判定
  test 方法:Boolean test(String source)
       例如:
function isDigit(s){
var reg = /^[0-9]{1,20}$/;
var flag = reg.test(s);
//如果格式正确,返回true,否则返回false
if(flag){
return true;
}else{
return false;
}
}

  d.执行字符串位置查询
   search 方法:int search(String reg)
          例如:
function seachString(){
var r, re; // 声明变量
var s = "The rain in Spain falls mainly in the plain."; 
re = /falls/; // 创建正则表达式模式
r = s.search(re); // 查找字符串
alert(r); // 返回 int 结果表示出现位置
}

  e.执行字符串分割
  split 方法:String[ ] split(String reg)
        例如:
function splitString( ){
var r, reg; // 声明变量
reg = /abc/; // 创建正则表达式模式
var s = “IcansaymyabcIcansaymyabcIcan…"; 
r = s.split(reg); // 分割字符串
for(var p in r){    // 返回 String 数组
alert(r[p]); 
}

---------------------------------------------------------------------










原创粉丝点击