测量试验字符串的某部格局

正则表明式使用安详严整

简介

简言之的说,正则表达式是黄金年代种能够用于格局相配和替换的强盛的工具。其成效如下:
测量试验字符串的有个别格局。譬喻,能够对多少个输入字符串进行测量检验,看在该字符串是或不是留存三个电话号码方式或三个银行卡号码格局。那叫做数占有效性验证。
轮换文本。能够在文书档案中央银行使一个正则表明式来标识特定文字,然后能够整个将其除去,只怕替换为别的文字。
基于方式相配从字符串中领取多少个子字符串。能够用来在文件或输入字段中搜索特定文字。

骨干语法

在对正则表明式的成效和作用有了最早的打听之后,我们就来具体看一下正则表明式的语法格式。

正则表明式的样式日常如下:

/love/当中坐落于“/”定界符之间的豆蔻梢头对正是就要要对象对象中打开相配的方式。顾客只要把梦想物色匹配成对象的情势内容放入“/”定界符之间就能够。为了能够使客户更灵活的定制格局内容,正则表达式提供了极其的“元字符”。所谓元字符正是指这一个在正则表明式中具备卓绝意义的专项使用字符,可以用来规定其指引字符(即坐落于元字符后边的字符State of Qatar在对象对象中的现身方式。
较为常用的元字符包蕴: “+”, “*”,以及 “?”。
“+”元字符规定其指导字符必得在对象对象中三番五次现身一遍或频仍。
“*”元字符规定其辅导字符必需在对象对象中冒出零次或三回九转数次。
“?”元字符规定其指导对象必得在目的对象中连连现身零次或一次。

下边,就让我们来看一下正则表达式元字符的绘声绘色游使。

/fo+/因为上述正则表明式中含有“+”元字符,表示能够与目的对象中的 “fool”,
“fo”, 或者“football”等在字母f前面接二连三现身叁个或两个字母o的字符串相相配。
/eg*/因为上述正则表明式中包罗“*”元字符,表示能够与对象对象中的 “easy”,
“ego”, 只怕 “egg”等在字母e前面再而三现身零个或四个字母g的字符串相相配。
/Wil?/因为上述正则表达式中蕴藏“?”元字符,表示能够与对象对象中的 “Win”,
恐怕“Wilson”,等在字母i前面延续现身零个或贰个字母l的字符串相相称。

突发性不了然要合营多少字符。为了能适应这种不显明,正则表达式协理限制符的定义。这么些节制符能够钦点正则表明式的三个加以组件必定要现身微微次技艺满意相称。

{n} n 是叁个非负整数。相配鲜明的 n 次。比方,’o{2}’ 不能够相配 “鲍伯” 中的
‘o’,可是能相称 “food” 中的多少个 o。
{n,} n 是三个非负整数。起码相配 n 次。举个例子,’o{2,}’ 不可能匹配 “Bob” 中的
‘o’,但能相称 “foooood” 中的全数 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’
则也正是 ‘o*’。
{n,m} m 和 n 均为非负整数,此中n <= m。起码匹配 n 次且最多相配 m
次。举个例子,”o{1,3}” 将相配 “fooooood” 中的前多个 o。’o{0,1}’ 等价于
‘o?’。请小心在逗号和八个数里面无法有空格。
除此而外元字符之外,客户还能够规范钦赐方式在格外对象中冒出的频率。例如,/jim
{2,6}/
上述正则表明式规定字符m能够在特别对象中三番两次现身2-6次,因而,上述正则表明式可以同jimmy或jimmmmmy等字符串相相配。

在对怎么行使正则表达式有了开班精通之后,我们来看一下别的多少个根本的元字符的应用办法。
s:用于相配单个空格符,包罗tab键和换行符;
S:用于相配除单个空格符之外的享有字符;
d:用于匹配从0到9的数字;
w:用于相称字母,数字或下划线字符;
W:用于相配全部与w不相称的字符;
. :用于相称除换行符之外的富有字符。

(表达:我们得以把s和S以及w和W看作互为逆运算State of Qatar

上面,大家就由此实例看一下什么样在正则表明式中运用上述元字符。

/s+/ 上述正则表明式能够用于相配目的对象中的多少个或三个空格字符。
/d000/ 如果大家手中有生龙活虎份复杂的财务指标,那么大家得以透过上述正则表达式举手之劳的查究到持有总额达千元的款项。
除去我们上述所介绍的元字符之外,正则表达式中还兼具其它后生可畏种较为特殊的专项使用字符,即定位符。定位符用于规定相称形式在目的对象中的现身岗位。
较为常用的一定符满含: “^”, “$”, “b” 以及 “B”。
“^”定位符规定相称格局必需出现在指标字符串的初步
“$”定位符规定相称形式必须出以往目的对象的末梢
“b”定位符规定相配格局必得出今后指标字符串的早先或最终的七个境界之生龙活虎
“B”定位符则规定匹配对象必需放在指标字符串的开头和最终四个境界之内,
即匹配成对象既不可能作为对象字符串的起来,也不可能看做对象字符串的末段。
风度翩翩致,大家也能够把“^”和“$”以至“b”和“B”看作是互为逆运算的两组定位符。譬世尊说:
/^hell/ 因为上述正则表明式中带有“^”定位符,所以能够与对象对象中以
“hell”, “hello”或“hellhound”开始的字符串相相称。
/ar$/ 因为上述正则表明式中包含“$”定位符,所以能够与对象对象中以 “car”,
“bar”或 “ar” 结尾的字符串相匹配。
/bbom/ 因为上述正则表达式方式以“b”定位符开首,所以可以与对象对象中以
“bomb”, 或
“bom”伊始的字符串相相配。/manb/ 因为上述正则表明式格局以“b”定位符结尾,所以能够与目的对象中以
“human”, “woman”或 “man”结尾的字符串相相配。
为了能够有助于顾客更加灵敏的设定相称情势,正则表达式允许使用者在合营格局中钦定某七个约束而不囿于于实际的字符。比方:
/[A-Z]/上述正则表明式将会与从A到Z范围内任何叁个大写字母相相配。
/[a-z]/上述正则表明式将会与从a到z范围内任何多个小写字母相相配。
/[0-9]/  上述正则表明式将会与从0到9约束内任何一个数字相相称。
/([a-z][A-Z][0-9]State of Qatar+/ 上述正则表明式将会与任何由字母和数字组成的字符串,如
“aB0” 等相相配。

这里必要提醒顾客注意的少数正是能够在正则表明式中使用 “(State of Qatar”
把字符串组合在同步。“(卡塔尔国”符号包罗的剧情必须同有的时候间出以后目的对象中。因而,上述正则表明式将不能与诸如
“abc”等的字符串相配,因为“abc”中的尾数字符为字母而非数字。
如果我们期望在正则表明式中贯彻相符编制程序逻辑中的“或”运算,在多少个不等的格局中任选叁个举行相称的话,能够选用管道符
“|”。比方:/to|too|2/ 上述正则表达式将会与对象对象中的 “to”, “too”, 或
“2” 相相称。
正则表达式中还会有多少个较为常用的运算符,即否定符
“[^]”。与我们前文所介绍的永远符 “^” 分歧,否定符
“[^]”规定目的对象中不可能存在格局中所规定的字符串。举个例子:/[^A-C]/ 上述字符串将会与目的对象中除A,B,和C之外的其余字符相相配。平日的话,当“^”现身在“[]”内时就被视做否定运算符;而当“^”坐落于“[]”之外,或没有“[]”时,则应当被视做定位符。
末尾,当客户供给在正则表明式的格局中参加元字符,并物色其匹配对象时,能够利用转义符“”。例如:/Th*/
 上述正则表达式将会与目标对象中的“Th*”而非“The”等相相称。

在布局正则表明式之后,就可以象数学表明式同样来求值,也正是说,能够从左至右并遵照叁个事前级依次来求值。优先级如下:

1. 转义符
2.(), (?:), (?=), [] 圆括号和方括号
3.*, +, ?, {n}, {n,}, {n,m} 限定符
4.^, $, anymetacharacter 地点和意气风发意气风发
5.|“或”操作

运用实例

在JavaScript
1.第22中学包罗叁个功能强盛的RegExp(State of Qatar对象,能够用来实行正则表达式的相当操作。在这之中的test(卡塔尔国方法能够查看指标对象中是还是不是带有相配方式,并相应的回到true或false。
我们能够使用JavaScript编写以下脚本,验证客户输入的邮件地址的管用。
正则表达式对象
  本目的包蕴正则表达式情势以致申明怎么着行使情势的标记。
  语法 1 re = /pattern/[flags]
  语法 2 re = new RegExp(“pattern”,[“flags”])
  参数
  re
  必选项。将在赋值为正则表明式情势的变量名。
  Pattern
  必选项。要利用的正则表明式格局。假若应用语法 1,用 “/”
字符分隔模式。要是用语法 2,用引号将情势引起来。
  Flags
  可选项。即使使用语法 2 要用引号将 flag
引起来。标识能够构成使用,可用的有:
  g (全文字笔迹考验索现身的兼具 pattern卡塔尔
  i (忽视大小写State of Qatar
  m (多行查找State of Qatar

  示例

  上边包车型大巴演示创立一个分包正则表达式方式及连锁标记的靶子(re卡塔尔国,向您演示正则表明式对象的用法。在本例中,作为结果的正则表达式对象又用于
match 方法中:

复制代码 代码如下:
function MatchDemo()
  {
  var r, re; // 注脚变量。
  var s = “The rain in Spain falls mainly in the plain”;
  re = new RegExp(“ain”,”g”卡塔尔(قطر‎; // 创造正则表达式对象。
  r = s.match(re卡塔尔(قطر‎; // 在字符串 s 中找找匹配。
  return(r);
  }

下边是绘声绘色的应用:
方法一:
var re=/正则表明式/;
re.test($(“txtid”).val())

方法二:
$(“txtid”卡塔尔.val.match(/正则表明式/State of Qatar;

正则表明式有各类分裂的风骨。下表是在PCRE桐月字符及其在正则表明式上下文中的行为的一个完整列表:

字符 描述
将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“n”匹配一个换行符。序列“\”匹配“”而“(”则匹配“(”。
^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“n”或“r”之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“n”或“r”之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。
{n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。
. 匹配除“n”之外的任何单个字符。要匹配包括“n”在内的任何字符,请使用像“[.n]”的模式。
(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“(”或“)”。
(?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern) 正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y 匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。
[xyz] 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
b 匹配一个单词边界,也就是指单词和空格间的位置。例如,“erb”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
B 匹配非单词边界。“erB”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
cx 匹配由x指明的控制字符。例如,cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
d 匹配一个数字字符。等价于[0-9]。
D 匹配一个非数字字符。等价于[^0-9]。
f 匹配一个换页符。等价于x0c和cL。
n 匹配一个换行符。等价于x0a和cJ。
r 匹配一个回车符。等价于x0d和cM。
s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[fnrtv]。
S 匹配任何非空白字符。等价于[^fnrtv]。
t 匹配一个制表符。等价于x09和cI。
v 匹配一个垂直制表符。等价于x0b和cK。
w 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
xn 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“x41”匹配“A”。“x041”则等价于“x04&1”。正则表达式中可以使用ASCII编码。.
num 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)1”匹配两个连续的相同字符。
n 标识一个八进制转义值或一个向后引用。如果n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
nm 标识一个八进制转义值或一个向后引用。如果nm之前至少有nm个获得子表达式,则nm为向后引用。如果nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则nm将匹配八进制转义值nm。
nml 如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。
un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,u00A9匹配版权符号(?)。

附:

证实数字的正则表明式集(转发)
申明数字:^[0-9]*$
表达n位的数字:^d{n}$
证实起码n位数字:^d{n,}$
注明m-n位的数字:^d{m,n}$
验证零和非零开端的数字:^(0|[1-9][0-9]*)$
表达有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
表明有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
表明非零的正整数:^+?[1-9][0-9]*$
证实非零的负整数:^-[1-9][0-9]*$
注解非负整数(正整数 + 0) ^d+$
验证非正整数(负整数 + 0) ^((-d+)|(0+))$
表明长度为3的字符:^.{3}$
表达由贰17个乌Crane语字母组成的字符串:^[A-Za-z]+$
表明由二十八个大写波兰语字母组成的字符串:^[A-Z]+$
表达由二十七个小写爱沙尼亚语字母组成的字符串:^[a-z]+$
表明由数字和二十七个加泰罗尼亚语字母组成的字符串:^[A-Za-z0-9]+$
表达由数字、二十八个乌克兰语字母大概下划线组成的字符串:^w+$
表达客商密码:^[a-zA-Z]w{5,17}$
正确格式为:以字母发轫,长度在6-18之内,只可以分包字符、数字和下划线。
证实是还是不是带有 ^%&’,;=?$” 等字符:[^%&’,;=?$x22]+
注解汉字:^[u4e00-u9fa5],{0,}$
验证Email地址:^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$
验证InternetURL:^
;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
表明电话号码:^((d{3,4})|d{3,4}-)?d{7,8}$:–精确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
表达身份ID号(十六个人或十七个人数字):^d{15}|d{}18$
说美素佳儿(Friso卡塔尔年的十三个月:^(0?[1-9]|1[0-2]卡塔尔国$
准确格式为:“01”-“09”和“1”“12”
表达风流倜傥(Wissu卡塔尔个月的31天:^((0?[1-9])|((1|2)[0-9]卡塔尔(قطر‎|30|31卡塔尔$
正确格式为:01、09和1、31。
整数:^-?d+$
非负浮点数(正浮点数 + 0):^d+(.d+)?$
正浮点数
^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-d+(.d+)?)|(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+)?

上面是切实可行的函数写法,不会的能够参见下。 复制代码 代码如下:
function check()
{
var bb =
document.getElementById(“txt_id”).value;//txt_id为文本框的ID
alert(ismobile(bb卡塔尔国卡塔尔国;//ismobile 代表以下任何三个函数名称
}
HTML代码:

**************************/
// 判别输入是还是不是是三个由 0-9 / A-Z / a-z 组成的字符串
function isalphanumber(str)
{
var result=str.match(/^[a-zA-Z0-9]+$/);
if(result==null) return false;
return true;
}

// 推断输入是或不是是二个数字–(数字带有小数卡塔尔国–
function isnumber(str)
{
return !isNaN(str);
}

// 决断输入是或不是是二个整数
function isint(str)
{
var result=str.match(/^(-|+)?d+$/);
if(result==null) return false;
return true;
}

// 推断输入是不是是有效的长日子格式 – “YYYY-MM-DD HH:MM:SS” || “YYYY/MM/DD
HH:MM:SS”
function isdatetime(str)
{
var result=str.match(/^(d{4})(-|/)(d{1,2})2(d{1,2})
(d{1,2}):(d{1,2}):(d{1,2})$/);
if(result==null) return false;
var d= new Date(result[1], result[3]-1, result[4], result[5],
result[6], result[7]);
return
(d.getFullYear()==result[1]&&(d.getMonth()+1)==result[3]&&d.getDate()==result[4]&&d.getHours()==result[5]&&d.getMinutes()==result[6]&&d.getSeconds()==result[7]);
}

// 检查是或不是为 YYYY-MM-DD || YYYY/MM/DD 的日子格式
function isdate(str){
var result=str.match(/^(d{4})(-|/)(d{1,2})2(d{1,2})$/);
if(result==null) return false;
var d=new Date(result[1], result[3]-1, result[4]);
return (d.getFullYear()==result[1] && d.getMonth()+1==result[3] &&
d.getDate()==result[4]);
}

// 判断输入是不是是有效的电子邮件
function isemail(str)
{
var
result=str.match(/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/);
if(result==null) return false;
return true;
}

// 去除字符串的前因后果的空格
function trim(str){
return str.replace(/(^s*)|(s*$)/g, “”);
}

// 返回字符串的其实尺寸, 叁当中黄炎子孙民共和国字算2个长度
function strlen(str){
return str.replace(/[^x00-xff]/g, “**”).length;
}

//相配中夏族民共和国邮编(6位卡塔尔国
function ispostcode(str)
{
var result=str.match(/[1-9]d{5}(?!d)/);
if(result==null) return false;
return true;
}
//相配国内电话号码(0511-4405222 或 021-87888822卡塔尔(قطر‎
function istell(str)
{
var result=str.match(/d{3}-d{8}|d{4}-d{7}/);
if(result==null) return false;
return true;
}

//校验是不是为(0-10000卡塔尔国的整数
function isint1(str)
{
var result=str.match(/^[0-9]$|^([1-9])([0-9]){0,3}$|^10000$/);
if(result==null) return false;
return true;
}

//相称TencentQQ号
function isqq(str)
{
var result=str.match(/[1-9][0-9]{4,}/);
if(result==null) return false;
return true;
}

//相称身份ID(15人或20位卡塔尔国
function isidcard(str)
{
var result=str.match(/d{15}|d{18}/);
if(result==null) return false;
return true;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//校验文本是或不是为空
function checknull(field,sval)
{
if (field.value ==””)
{
alert(“请填写” + sval + “!”);
field.focus();
return false;
}
return true;
}

//屏蔽输入字符
/***********************
调用方法:
在文本框中加上 onkeypress=”return checkChar(卡塔尔国”
*************************/
function checkChar()
{
var keycode = event.keyCode;
if(!(keycode>=48&&keycode<=57))
{
return false;
}
}

/***************************************************************************************************************************
中华电话号码验证
相称格局如:0511-4405222 大概021-87888822 也许 021-44055520-555 仍然(0511State of Qatar4405222
正则表明式 “((d{3,4}State of Qatar|d{3,4}-State of Qatar?d{7,8}(-d{3}卡塔尔国*”

神州邮编验证
极其方式如:215421
正则表达式 “d{6}”

电子邮件验证
分外情势如:justali@justdn.com
正则表明式 “w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*”

居民身份证声明
特出格局如:14位依然贰12位身份ID
正则表达式 “d{18}|d{15}”

常用数字作证
正则表明式
“d{n}” n为鲜明长度
“d{n,m}” n到m的尺寸限定

地下字符验证
极其违法字符如:< > & / ‘ |
正则表明式 [^<>&/|’]+

日子验证
相当方式如:二〇〇三0718,030718
范围:1900–2099
正则表明式((((19卡塔尔{1}|(20卡塔尔(قطر‎{1}卡塔尔d{2}卡塔尔(قطر‎|d{2}卡塔尔国[01]{1}d{1}[0-3]{1}d{1}

相称国语字符的正则表明式: [u4e00-u9fa5]
评注:相称华语还真是个咳嗽的事,有了那些表明式就好办了

协作双字节字符(满含汉字在内State of Qatar:[^x00-xff]
评注:能够用来测算字符串的长短(多少个双字节字符长度计2,ASCII字符计1)

相称空白行的正则说明式:ns*r
评注:能够用来删除空白行

相配HTML标志的正则表达式:< (S*?)[^>]*>.*?|< .*?
/>
评注:英特网流传的版本太糟糕,上边那几个也可是能合营部分,对于复杂的嵌套标识依然不可能

相称首尾空白字符的正则表明式:^s*|s*$
评注:能够用来删除行首行尾的空白字符(包蕴空格、制表符、换页符等等State of Qatar,特别实用的表明式

相配Email地址的正则表明式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实用

十三分网站U昂CoraL的正则表明式:[a-zA-z]+://[^s]*
评注:网络流传的版本效果很有限,上边这么些核体会以满足必要

合营帐号是或不是合法(字母早前,允许5-16字节,允许字母数字下划线State of Qatar:^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

同盟国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:相配情势如 0511-4405222 或 021-87888822

相配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

协作中中原人民共和国邮编:[1-9]d{5}(?!d)
评注:中夏族民共和国邮编为6位数字

相配身份ID:d{15}|d{18}
评注:中华夏族民共和国的居民身份证为十伍位或十八位

匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有用

领到音讯中的ip地址:
(d+).(d+).(d+).(d+)

领到消息中的中夏族民共和国手机号码:
(86)*0*13d{9}

领到音讯中的中夏族民共和国定位电话号码:
((d{3,4})|d{3,4}-|s)?d{8}

领裁撤息中的中华夏儿女民共和国电话号码(富含运动和长久电话):
((d{3,4})|d{3,4}-|s)?d{7,14}

领撤废息中的中夏族民共和国邮编:
[1-9]{1}(d+){5}

领撤废息中的中华夏族民共和国居民身份证编号:
d{18}|d{15}

领到音信中的整数:
d+

领到信息中的浮点数(即小数):
(-?d*).?d+

领取新闻中的任何数字 :
(-?d*)(.d+)?

领撤消息中的汉语字符串:
[u4e00-u9fa5]*

领到新闻中的双字节字符串 (汉字卡塔尔国:
[^x00-xff]*

领到信息中的乌Crane语字符串:
w*
领取新闻中的互连网链接:
(h|H)(r|R)(e|E)(f|F) *= *(‘|”)?(w|\|/|.)+(‘|”| *|>)?

领取音信中的邮件地址:
w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

领取音讯中的图片链接:
(s|S)(r|R)(c|C) *= *(‘|”)?(w|\|/|.)+(‘|”| *|>)?

匹配特定数字:
^[1-9]d*$    //相配正整数
^-[1-9]d*$   //相配负整数
^-?[1-9]d*$   //相配整数
^[1-9]d*|0$  //相配非负整数(正整数 + 0)
^-[1-9]d*|0$   //相称非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*卡塔尔国$  //相配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0卡塔尔(قطر‎$ 
//相配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$  
//相称非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //相配非正浮点数(负浮点数

  • 0)
    评注:管理多量数据时有用,具体采纳时注意修正

极其特定字符串:
^[A-Za-z]+$  //相称由29个法文字母组成的字符串
^[A-Z]+$  //相称由29个韩语字母的大写组成的字符串
^[a-z]+$  //相配由27个葡萄牙共和国语字母的小写组成的字符串
^[A-Za-z0-9]+$  //相称由数字和二十八个乌Crane语字母组成的字符串
^w+$  //匹配由数字、二十八个英语字母只怕下划线组成的字符串
评注:最主题也是最常用的有个不要表明式

////////////////////前4路程序用于保护js代码不被下载
// ////////////////////基本正则表达式///////////////////
//非空验证 function NotNull (strState of Qatar { return (str!=””); }
//邮件地址验证
function checkEmail (str) {
//邮件地址正则表明式
isEmail1=/^w+([.-]w+)*@w+([.-]w+)*.w+$/;
//邮件地址正则表明式 isEmail2=/^.*@[^_]*$/;
//验证邮件地址,重回结果 return
(isEmail1.test(strState of Qatar&&isEmail2.test(strState of QatarState of Qatar;
} //身份ID验证 function checkIDCard (strState of Qatar {
//身份ID正则表明式(16个人卡塔尔(قطر‎
isIDCard1=/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$/;
//身份ID正则表达式(17个人卡塔尔国isIDCard2=/^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{4}$/;
//验证身份ID,重临结果 return
(isIDCard1.test(str卡塔尔||isIDCard2.test(str卡塔尔卡塔尔(قطر‎; }
//IP验证 function checkIP (str)
{ //IP正则表达式
IP='(25[0-5]|2[0-4]\d|1\d\d|\d\d|\d)’;
IPdot=IP+’\.’; isIPaddress=new
RegExp(‘^’+IPdot+IPdot+IPdot+IP+’$’);
//验证IP,重回结果 return (isIPaddress.test(strState of Qatar卡塔尔国; }
//主页(网址)验证 function checkHomepage (str) {
//主页正则表明式 //isHomepage=/^w+([.-]w)*$/;
isHomepage=/^w+(.w+)+.w+$/;
//验证主页,重返结果 return (isHomepage.test(str)State of Qatar; }
//是否数字 function isNum (strState of Qatar {
//isNumber=/^([1-9]d*(.d+)?)|(d+(.d+))$/;
isNumber=/^d+(.d+)?$/;
//验证并赶回结果 return (isNumber.test(str卡塔尔卡塔尔国; }
//是或不是整数 function isInt (str卡塔尔(قطر‎ { isInteger=/^d+$/;
//验证并赶回结果 return (isInteger.test(strState of QatarState of Qatar; }
//是还是不是字母 function isChar (str卡塔尔(قطر‎ { isCharacter=/^[A-Za-z]+$/;
//验证并赶回结果 return (isCharacter.test(str卡塔尔国卡塔尔; }
/////////////////////基本弹出窗口///////////////////
function checkBoolean(bv,i,w) { if(bv==false) {
try{i.focus();}catch(e){} alert(w); return false; } return true }
////////////////////成分和取值剖断//////////////////// //
已选择 function checkElement_selected(item,alert_str) {
if(item.type==”select-one”)return
checkElement_NotNull(item,alert_str);
if(alert_str.length==0)alert_str=item.title+”为必选项!”; rt=false;
if(item.length>0卡塔尔(قطر‎ { for(i=0;i不为空 function
checkElement_NotNull(a,alert_str,g) { v=a.value; w=alert_str;
if(alert_str.length==0卡塔尔(قطر‎w=a.title+”不能够为空!”;
return(checkValue_NotNull(v,a,w,g)); } function
checkValue_NotNull(v,i,w,g) {
if(g!=”NOT_TRIM”)v=v.replace(/(^s*)|(s*$)/g, “”); bv=NotNull(v);
return(checkBoolean(bv,i,w)); }
// 合法邮箱 function checkElement_IsEmail(a,alert_str,g) { v=a.value;
w=alert_str; if(alert_str.length==0卡塔尔(قطر‎w=a.title+”不可能为空!”;
return(checkValue_IsEmail(v,a,w,g)); }
function checkValue_IsEmail(v,i,w,g) {
if(g!=”NOT_TRIM”)v=v.replace(/(^s*)|(s*$卡塔尔/g, “”State of Qatar;
bv=checkEmail(v卡塔尔; return(checkBoolean(bv,i,w卡塔尔State of Qatar; } // 合法居民身份证 function
checkElement_IsIDCard(a,alert_str,g) { v=a.value; w=alert_str;
if(alert_str.length==0卡塔尔国w=a.title+”不可能为空!”;
return(checkValue_IsIDCard(v,a,w,g)); }
function checkValue_IsIDCard(v,i,w,g) {
if(g!=”NOT_TRIM”)v=v.replace(/(^s*)|(s*$)/g, “”);
bv=checkIDCard(v); return(checkBoolean(bv,i,w)); } // 合法IP function
checkElement_IsIP(a,alert_str,g) { v=a.value; w=alert_str;
if(alert_str.length==0卡塔尔(قطر‎w=a.title+”不能够为空!”;
return(checkValue_IsIP(v,a,w,g)); } function checkValue_IsIP(v,i,w,g)
{ if(g!=”NOT_TRIM”)v=v.replace(/(^s*)|(s*$)/g, “”);
bv=checkIP(v); return(checkBoolean(bv,i,w)); }
// 验证数字 function checkElement_IsNum(a,alert_str,g) { v=a.value;
w=alert_str; if(alert_str.length==0卡塔尔国w=a.title+”无法为空!”;
return(checkValue_IsNum(v,a,w,g)); } function
checkValue_IsNum(v,i,w,g) {
if(g!=”NOT_TRIM”)v=v.replace(/(^s*)|(s*$)/g, “”); bv=isNum(v);
return(checkBoolean(bv,i,w)); }
// 验证整数 function checkElement_IsInt(a,alert_str,g) { v=a.value;
w=alert_str; if(alert_str.length==0卡塔尔国w=a.title+”不可能为空!”;
return(checkValue_IsInt(v,a,w,g)); } function
checkValue_IsInt(v,i,w,g) {
if(g!=”NOT_TRIM”)v=v.replace(/(^s*)|(s*$State of Qatar/g, “”State of Qatar; bv=isInt(vState of Qatar;
return(checkBoolean(bv,i,w卡塔尔国卡塔尔国; } // 验证字母 function
checkElement_IsChar(a,alert_str,g) { v=a.value; w=alert_str;
if(alert_str.length==0卡塔尔(قطر‎w=a.title+”不可能为空!”;
return(checkValue_IsChar(v,a,w,g)); } function
checkValue_IsChar(v,i,w,g) {
if(g!=”NOT_TRIM”)v=v.replace(/(^s*)|(s*$)/g, “”); bv=isChar(v);
return(checkBoolean(bv,i,w)); }
// 合法主页 function checkElement_IsHomepage(a,alert_str,g) {
v=a.value; w=alert_str; if(alert_str.length==0卡塔尔国w=a.title+”不能够为空!”;
return(checkValue_IsHomepage(v,a,w,g)); } function
checkValue_IsHomepage(v,i,w,g) {
if(g!=”NOT_TRIM”)v=v.replace(/(^s*)|(s*$)/g, “”);
bv=checkHomepage(v); return(checkBoolean(bv,i,w)); }

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website