[转]js正则表达式

本文转自:http://www.cnblogs.com/wucg/archive/2010/04/09/1708440.html

exec 方法

用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。

rgExp.exec(str)

参数

rgExp

必选项。包含正则表达式模式和可用标志的正则表达式对象。

str

必选项。要在其中执行查找的 String 对象或字符串文字。

说明

如果 exec 方法没有找到匹配,则它返回 null。如果它找到匹配,则 exec 方法返回一个数组,并且更新全局 RegExp 对象的属性,以反映匹配结果。数组的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志 (g) 的 match 方法。

如果为正则表达式设置了全局标志,exec 从以 lastIndex 的值指示的位置开始查找。如果没有设置全局标志,exec 忽略 lastIndex 的值,从字符串的起始位置开始搜索。

exec 方法返回的数组有三个属性,分别是 inputindexlastIndexInput 属性包含了整个被查找的字符串。Index 属性中包含了整个被查找字符串中被匹配的子字符串的位置。LastIndex 属性中包含了匹配中最后一个字符的下一个位置。

示例

下面的例子举例说明了 exec 方法的用法:

 

代码
复制代码
function RegExpTest(){   var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())   if (ver >= 5.5){                 // 测试 JScript 的版本。     var src = "The rain in Spain falls mainly in the plain.";     var re = /\w+/g;               // 创建正则表达式模式。     var arr;     while ((arr = re.exec(src)) != null)        document.write(arr.index + "-" + arr.lastIndex + "\t" + arr);   }   else{     alert("请使用 JScript 的更新版本");   } }
复制代码

 

match 方法

使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。

stringObj.match(rgExp)

function MatchDemo(){    var r, re;         // 声明变量。    var s = "The rain in Spain falls mainly in the plain";    re = /ain/ig;      // 创建正则表达式模式。    r = s.match(re);   // 尝试去匹配搜索字符串。    return(r);         // 返回的数组包含了所有 "ain"                       // 出现的四个匹配。 }

search 方法

返回与正则表达式查找内容匹配的第一个子字符串的位置。

stringObj.search(rgExp)

参数

stringObj

必选项。要在其上进行查找的 String 对象或字符串文字。

rgExp

必选项。包含正则表达式模式和可用标志的正则表达式对象。

说明

search 方法指明是否存在相应的匹配。如果找到一个匹配,search 方法将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配,则返回 -1。

示例

下面的示例演示了 search 方法的用法。

function SearchDemo(){   var r, re;                   // 声明变量。  
 var s = "The rain in Spain falls mainly in the plain.";   re = /falls/i;            
// 创建正则表达式模式。 
  r = s.search(re);            
// 查找字符串。   return(r);                 
  // 返回 Boolean 结果。}

test 方法

返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。

rgexp.test(str)

参数

rgexp

必选项。包含正则表达式模式或可用标志的正则表达式对象。

str

必选项。要在其上测试查找的字符串。

说明

test 方法检查在字符串中是否存在一个模式,如果存在则返回 true,否则就返回 false

全局 RegExp 对象的属性不由 test 方法来修改。

示例

下面的例子举例说明了 test 方法的用法:

function TestDemo(re, s){   var s1;                         // 声明变量。   
// 检查字符串是否存在正则表达式。   if (re.test(s))                 
// 测试是否存在。      s1 = " contains ";           // s 包含模式。   
else      s1 = " does not contain ";   // s 不包含模式。   
return("'" + s + "'" + s1 + "'"+ re.source + "'"); // 返回字符串。}

split 方法

将一个字符串分割为子字符串,然后将结果作为字符串数组返回。

stringObj.split([separator[, limit]])

参数

stringObj

必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。

separator

可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。

limit

可选项。该值用来限制返回数组中的元素个数。

说明

split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解。separator 不作为任何数组元素的部分返回。

示例

下面的示例演示了 split 方法的用法。

function SplitDemo(){   var s, ss;  
 var s = "The rain in Spain falls mainly in the plain.";   // 在每个空格字符处进行分解。 
  ss = s.split(" ");   return(ss);}

split 方法

将一个字符串分割为子字符串,然后将结果作为字符串数组返回。

stringObj.split([separator[, limit]])

参数

stringObj

必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。

separator

可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。

limit

可选项。该值用来限制返回数组中的元素个数。

说明

split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解。separator 不作为任何数组元素的部分返回。

示例

下面的示例演示了 split 方法的用法。

function SplitDemo(){   var s, ss;   var s = "The rain in Spain falls mainly in the plain.";  
 // 在每个空格字符处进行分解。  
 ss = s.split(" ");   return(ss);}










JS 正则表达式 exec
转自:http://www.php100.com/html/webkaifa/javascript/2010/0803/5129.html

//校验是否全由数字组成

  function isDigit(s)

  {

  var patrn=/^[0-9]{1,20}$/;

  if (!patrn.exec(s)) return false

  return true

  }

  //校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串

  function isRegisterUserName(s)

  {

  var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;

  if (!patrn.exec(s)) return false

  return true

  }

  //校验用户姓名:只能输入1-30个以字母开头的字串

  function isTrueName(s)

  {

  var patrn=/^[a-zA-Z]{1,30}$/;

  if (!patrn.exec(s)) return false

  return true

  }

  }}

  //校验密码:只能输入6-20个字母、数字、下划线

  function isPasswd(s)

  {

  var patrn=/^(\w){6,20}$/;

  if (!patrn.exec(s)) return false

  return true

  }

  //校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”

  function isTel(s)

  {

  //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;

  var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;

  if (!patrn.exec(s)) return false

  return true

  }

  //校验手机号码:必须以数字开头,除数字外,可含有“-”

  function isMobil(s)

  {

  var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;

  if (!patrn.exec(s)) return false

  return true

  }

  //校验邮政编码

  function isPostalCode(s)

  {

  //var patrn=/^[a-zA-Z0-9]{3,12}$/;

  var patrn=/^[a-zA-Z0-9 ]{3,12}$/;

  if (!patrn.exec(s)) return false

  return true

  }

  //校验搜索关键字

  function isSearch(s)

  {

  var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\]

  [\]\{\}:;'\,.<>?]{0,19}$/;

  if (!patrn.exec(s)) return false

  return true

  }

  function isIP(s) //by zergling

  {

  var patrn=/^[0-9.]{1,20}$/;

  if (!patrn.exec(s)) return false

  return true

  }

  正则表达式

  "^\\d+$"  //非负整数(正整数 + 0)

  "^[0-9]*[1-9][0-9]*$"  //正整数

  "^((-\\d+)|(0+))$"  //非正整数(负整数 + 0)

  "^-[0-9]*[1-9][0-9]*$"  //负整数

  "^-?\\d+$"    //整数

  "^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0)

  "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"

  //正浮点数

  "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0)

  "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"

  //负浮点数

  "^(-?\\d+)(\\.\\d+)?$"  //浮点数

  "^[A-Za-z]+$"  //由26个英文字母组成的字符串

  "^[A-Z]+$"  //由26个英文字母的大写组成的字符串

  "^[a-z]+$"  //由26个英文字母的小写组成的字符串

  "^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串

  "^\\w+$"  //由数字、26个英文字母或者下划线组成的字符串

  "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址

  "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url

  "^[A-Za-z0-9_]*$"









posted on 2013-03-26 07:40  freeliver54  阅读(218)  评论(0编辑  收藏  举报

导航