正则表明式,java正则表达式

征集的部分常用java正则表明式,java正则表明式

只能输入数字:"^[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"*$。
只好输入长度为3的字符:"^.{3}$"。
只好输入由二十六个保加伯明翰语字母组成的字符串:"^[A-Za-z]+$"。
只可以输入由贰21个大写立陶宛共和国(Republic of Lithuania)语字母组成的字符串:"^[A-Z]+$"。
只可以输入由30个小写意国语字母组成的字符串:"^[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:"^
注明电话号码:"^((d{3,4}-)|d{3.4}-)?d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
证实身份ID号(二十人或二10个人数字):"^d{15}|d{18}$"。
证实一年的10个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。
证实5个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。
选拔正则表明式限制网页表单里的文本框输入内容:

用正则表明式限制只好输入汉语:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"

用正则表明式限制只好输入全角字符: onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"

用正则表明式限制只可以输入数字:onkeyup="value=value.replace(/[^d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"

用正则表明式限制只可以输入数字和丹麦语:onkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"

得用正则表明式从USportageL地址中提取文件名的javascript程序,如下结果为page1

s=""
s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2")
alert(s)

协作双字节字符(包括汉字在内):[^x00-xff]

应用:计算字符串的尺寸(四个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}

合营空行的正则表明式:n[s| ]*r

相配HTML标志的正则表明式:/<(.*)>.*</1>|<(.*) />/

特别首尾空格的正则表明式:(^s*)|(s*$)

String.prototype.trim = function()
{
    return this.replace(/(^s*)|(s*$)/g, "");
}

利用正则表达式分解和转移IP地址:

上面是利用正则表明式相配IP地址,并将IP地址转变来对应数值的Javascript程序:

function IP2V(ip)
{
 re=/(d+).(d+).(d+).(d+)/g  //相配IP地址的正则表明式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
 throw new Error("Not a valid IP address!")
}
}

可是上边的次第一旦不用正则表明式,而直白用split函数来解释或许更简便,程序如下:

var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
标识解释:

字符
描述


将下二个字符标志为二个特殊字符、或一个原义字符、或三个向后援引、或三个八进制转义符。比方,'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,}' 不能够相配 "鲍勃" 中的 '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|3000)' 能相称 "Windows 2000" 中的 "Windows" ,但不能够相称"Windows 3.1" 中的 "Windows"。预查不消耗字符,也正是说,在一个相配发生后,在最后叁遍相称之后即刻开首下二遍相配的检索,实际不是从包蕴预查的字符之后初叶。

(?!pattern)
负向预查,在别的不匹配 pattern 的字符串开始处匹配查找字符串。那是三个非得到相配,也便是说,该相配无需获得供之后选用。比方'Windows (?!95|98|NT|三千)' 能相称 "Windows 3.1" 中的 "Windows",但不可能相配"Windows 三千" 中的 "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,...

正则表明式 收罗
只可以输入数字:"^[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"*$。
只好输入长度为3的字符:"^.{3}$"。
只可以输入由30个希伯来语字母组成的字符串:"^[A-Za-z]+$"。
只可以输入由贰二十个大写爱尔兰语字母组成的字符串:"^[A-Z]+$"。
只可以输入由28个小写英语字母组成的字符串:"^[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:"^
注明电话号码:"^((d{3,4}-)|d{3.4}-)?d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
证实居民身份证号(16人或17位数字):"^d{15}|d{18}$"。
证实一年的10个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。
证实二个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。
运用正则表达式限制网页表单里的文本框输入内容:

用正则表明式限制只好输入汉语:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"

用正则表明式限制只能输入全角字符: onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"

用正则表达式限制只可以输入数字:onkeyup="value=value.replace(/[^d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"

用正则表达式限制只可以输入数字和英语:onkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"

得用正则表明式从U昂CoraL地址中领到文件名的javascript程序,如下结果为page1

s=""
s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2")
alert(s)

拾贰分双字节字符(包涵汉字在内):[^x00-xff]

利用:计算字符串的长短(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}

十分空行的正则表达式:n[s| ]*r

相称HTML标志的正则表明式:/<(.*)>.*</1>|<(.*) />/

协作首尾空格的正则表明式:(^s*)|(s*$)

String.prototype.trim = function()
{
    return this.replace(/(^s*)|(s*$)/g, "");
}

运用正则表明式分解和改变IP地址:

上边是利用正则表明式相配IP地址,并将IP地址转变来对应数值的Javascript程序:

function IP2V(ip)
{
 re=/(d+).(d+).(d+).(d+)/g  //相配IP地址的正则表明式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
 throw new Error("Not a valid IP address!")
}
}

只是下面的顺序一旦不用正则表明式,而一直用split函数来声明或者更简便易行,程序如下:

var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
标识解释:

字符
描述


将下贰个字符标识为二个特殊字符、或三个原义字符、或二个向后援用、或多个八进制转义符。举个例子,'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|三千)' 能相配 "Windows 3000" 中的 "Windows" ,但无法相称"Windows 3.1" 中的 "Windows"。预查不消耗字符,也正是说,在贰个金童玉女发生后,在结尾一遍相称之后立时起头下二回相称的搜寻,并不是从富含预查的字符之后初阶。

(?!pattern)
负向预查,在其他不相称 pattern 的字符串伊始处匹配查找字符串。那是三个非获得相称,也正是说,该相配无需获得供之后采纳。举例'Windows (?!95|98|NT|3000)' 能相配 "Windows 3.1" 中的 "Windows",但不能够匹配"Windows 两千" 中的 "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 匹配版权符号 (?)。

posted @ 2010-02-11 13:46 Look_Sun 阅读(8) 评论(0


本文由华夏彩票发布于关于计算机,转载请注明出处:正则表明式,java正则表达式

您可能还会对下面的文章感兴趣: