正则表达式汇总

1.    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:

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

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

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

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

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

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

8.    "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数

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

10.    "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数

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

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

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

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

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

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

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

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

19.    /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日

20.    /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年

21.    "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"   //Emil

22.    /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码

23.    "^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"   //IP地址

24.

25.    匹配中文字符的正则表达式: [\u4e00-\u9fa5]

26.    匹配双字节字符(包括汉字在内):[^\x00-\xff]

27.    匹配空行的正则表达式:\n[\s| ]*\r

28.    匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

29.    匹配首尾空格的正则表达式:(^\s*)|(\s*$)

30.    匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

31.    匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$

32.    匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

33.    匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?

34.    匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$

35.

36.

37.    元字符及其在正则表达式上下文中的行为:

38.

39.    \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。

40.

41.    ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。

42.

43.    $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。

44.

45.    * 匹配前面的子表达式零次或多次。

46.

47.    + 匹配前面的子表达式一次或多次。+ 等价于 {1,}。

48.

49.    ? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。

50.

51.    {n} n 是一个非负整数,匹配确定的n 次。

52.

53.    {n,} n 是一个非负整数,至少匹配n 次。

54.

55.    {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。

56.

57.    ? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。

58.

59.    . 匹配除 "\n" 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符,请使用象 ’[.\n]’ 的模式。

60.    (pattern) 匹配pattern 并获取这一匹配。

61.

62.    (?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。

63.

64.    (?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。

65.

66.    (?!pattern) 负向预查,与(?=pattern)作用相反

67.

68.    x|y 匹配 x 或 y。

69.

70.    [xyz] 字符集合。

71.

72.    [^xyz] 负值字符集合。

73.

74.    [a-z] 字符范围,匹配指定范围内的任意字符。

75.

76.    [^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。

77.

78.    \b 匹配一个单词边界,也就是指单词和空格间的位置。

79.

80.    \B 匹配非单词边界。

81.

82.    \cx 匹配由x指明的控制字符。

83.

84.    \d 匹配一个数字字符。等价于 [0-9]。

85.

86.    \D 匹配一个非数字字符。等价于 [^0-9]。

87.

88.    \f 匹配一个换页符。等价于 \x0c 和 \cL。

89.

90.    \n 匹配一个换行符。等价于 \x0a 和 \cJ。

91.

92.    \r 匹配一个回车符。等价于 \x0d 和 \cM。

93.

94.    \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。

95.

96.    \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

97.

98.    \t 匹配一个制表符。等价于 \x09 和 \cI。

99.

100.    \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

101.

102.    \w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。

103.

104.    \W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。

105.

106.    \xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。

107.

108.    \num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。

109.

110.    \n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

111.

112.    \nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字
(0-7),则 \nm 将匹配八进制转义值 nm。

113.

114.    \nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。

115.

116.    \un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字符。

117.

118.    匹配中文字符的正则表达式: [u4e00-u9fa5]

119.

120.    匹配双字节字符(包括汉字在内):[^x00-xff]

121.

122.    匹配空行的正则表达式:n[s| ]*r

123.

124.    匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/

125.

126.    匹配首尾空格的正则表达式:(^s*)|(s*$)

127.

128.    匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

129.

130.    匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?

131.

132.    利用正则表达式限制网页表单里的文本框输入内容:

133.

134.    用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,‘‘)" onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[^u4E00-u9FA5]/g,‘‘))"

135.

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

137.

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

139.

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

141.

142.    =========常用正则式

143.

144.

145.

146.    匹配中文字符的正则表达式: [\u4e00-\u9fa5]

147.

148.    匹配双字节字符(包括汉字在内):[^\x00-\xff]

149.

150.    匹配空行的正则表达式:\n[\s| ]*\r

151.

152.    匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

153.

154.    匹配首尾空格的正则表达式:(^\s*)|(\s*$)

155.

156.    匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //

157.

158.    匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

159.

160.    匹配网址URL的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

161.

162.    sql语句:^(select|drop|delete|create|update|insert).*$

163.

164.    1、非负整数:^\d+$

165.

166.    2、正整数:^[0-9]*[1-9][0-9]*$

167.

168.    3、非正整数:^((-\d+)|(0+))$

169.

170.    4、负整数:^-[0-9]*[1-9][0-9]*$

171.

172.    5、整数:^-?\d+$

173.

174.    6、非负浮点数:^\d+(\.\d+)?$

175.

176.    7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

177.

178.    8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$

179.

180.    9、负浮点数:^(-((正浮点数正则式)))$

181.

182.    10、英文字符串:^[A-Za-z]+$

183.

184.    11、英文大写串:^[A-Z]+$

185.

186.    12、英文小写串:^[a-z]+$

187.

188.    13、英文字符数字串:^[A-Za-z0-9]+$

189.

190.    14、英数字加下划线串:^\w+$

191.

192.    15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$

193.

194.    16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$

195.    或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\‘:+!]*([^<>\"\"])*$

196.

197.    17、邮政编码:^[1-9]\d{5}$

198.

199.    18、中文:^[\u0391-\uFFE5]+$

200.

201.    19、电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$

202.

203.    20、手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$

204.

205.    21、双字节字符(包括汉字在内):^\x00-\xff

206.

207.    22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数)

208.

209.    23、匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/>

210.

211.    24、匹配空行:\n[\s| ]*\r

212.

213.    25、提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *(‘|")?(\w|\\|\/|\.)+(‘|"| *|>)?

214.

215.    26、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

216.

217.    27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *(‘|")?(\w|\\|\/|\.)+(‘|"| *|>)?

218.

219.    28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)

220.

221.    29、提取信息中的中国手机号码:(86)*0*13\d{9}

222.

223.    30、提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}

224.

225.    31、提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}

226.

227.    32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}

228.

229.    33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+

230.

231.    34、提取信息中的任何数字 :(-?\d*)(\.\d+)?

232.

233.    35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+)

234.

235.    36、电话区号:/^0\d{2,3}$/

236.

237.    37、腾讯QQ号:^[1-9]*[1-9][0-9]*$

238.

239.    38、帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

240.

241.    39、中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$

整理:

匹配中文字符的 正则表达式:[\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

匹配空行的正则 表达式:\n[\s| ]*\r

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)\/>/

匹配首尾空格的正则表达式:(^\s*)|(\s*$)

匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?

sql语句:^(select|drop|delete|create|update|insert).*$

1、 非负整数:^\d+$

2、正整数:^[0-9]*[1-9][0-9]*$

3、非正整数:^((-\d+)|(0+))$

4、负 整数:^-[0-9]*[1-9][0-9]*$

5、整数:^-?\d+$

6、非负浮点数:^\d+(\.\d+)?$

7、 正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$

9、负浮点 数:^(-((正浮点数正则式)))$

10、英文字符串:^[A-Za-z]+$

11、英文大写串:^[A-Z]+$

12、 英文小写串:^[a-z]+$

13、英文字符数字串:^[A-Za-z0-9]+$

14、英数字加下划线串:^\w+$

15、 E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$

16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$

或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\‘:+!]*([^<>\"\"])*$

17、 邮政编码:^[1-9]\d{5}$

18、中文:^[\u0391-\uFFE5]+$

19、电话号码:^((\ (\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$

20、 手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$

21、双字节字符(包括汉字在内):^\x00- \xff

22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数)

23、匹配HTML 标记:<(.*)>.*<\/\1>|<(.*)\/>

24、匹配空行:\n[\s| ]*\r

25、 提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *=*(‘|")?(\w|\\|\/|\.)+(‘|"| *|>)?

26、 提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

27、提取信息中的图 片链接:(s|S)(r|R)(c|C) *=*(‘|")?(\w|\\|\/|\.)+(‘|"| *|>)?

28、提取信 息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)

29、提取信息中的中国手机号码:(86)*0*13\d{9}

30、 提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}

31、提取信息中的中国电话号码(包括 移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}

32、提取信息中的中国邮政编码:[1-9] {1}(\d+){5}

33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+

34、提取信息中的任何数字 :(-?\d*)(\.\d+)?

35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+)

36、电话区 号:/^0\d{2,3}$/

37、腾讯QQ号:^[1-9]*[1-9][0-9]*$

38、帐号(字母开头,允许 5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

39、中文、英文、数字及下划 线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$

一  、先说正则表达式(regular expression)的基础语法:元字符(metacharacters)和常用的正则表达式

1.   点号:. 匹配单个任意的字符(包括空格,换行符,回车符,制表符,换页符)。

2.  字符组 [  ] 匹配单个字符。如[abdcedf]也就是匹配[]中的任一个字符都能成功:匹配a成功匹配b也能成功,但不能匹配k这样没有在[]中出现的字符。

3.  排除型字符组 [^ ]  排除括号内列出的字符 如[^abcd]匹配e能够成功,匹配a就失败

4.   转义字符  \  通常是把元字符转化成普通的字符   通常用于转换如:在匹配.号时,正常情况下正则表达式引擎(会在后面谈到)会把.当做元字符来处理,但是加上\就可以把\.中的点号当做一个普通的字符来 处理。

5.   问号  ? 匹配一个或没有的字符

6.   星号*   匹配多个或没有的字符

7.   加号 +  至少匹配一个字符或多个

8.  区间词{min,max} 匹配至少min次,和至多max次

9.    ^         匹配一行的开头

10.  $       匹配一行的结尾

11. \b        匹配单词的分界符

12. {?=}   肯定顺序环视

13.  {?!}    否定顺序环视

14.  {?<=}   肯定逆向环视

15.   {?<!}  否定逆向环视

16.  {?:}    非捕获分组

17.   {?>}    固化分组

二、下面的正则表达式针对各种语言又有一些的变化:

1.  \d   匹配任意的数字

2.  \D 匹配任意的非数字

3.  \w 匹配任意的小写字母,大写字母和数字和下划线_等于[a-zA-Z0-9_]

4.  \W 匹配任意的非字母等于[^\s]

5.  \s  匹配空字符如空格符,制表符,等

6.  \S  匹配非空字符

7.   \1\2 主要用于分组获得所分的组项,有时用的很方便哦。

还有就是一些常用的匹配表达式:

1.   \n   匹配换行符

2.  \A  匹配一行的开头与^一样的功能

主题:精通 JavaScript中的正则表达式

精通 JS正则表达式

正则表达式可以:

?测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验 证

?替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字

?根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字

正则表达式语法

一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

创建正则表达式

Js代码

  1. var re = new RegExp();//RegExp 是一个对象,和Aarray一样
  2. //但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去
  3. re =new RegExp("a");//最简单的正则表达式,将匹配字母a
  4. re=new RegExp("a","i");//第二个参数,表 示匹配时不分大小写

var re = new RegExp();//RegExp是一个对象,和Aarray一样

//但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去

re =new RegExp("a");//最简单的正则表达式,将匹配字母a

re=new RegExp("a","i");//第二个参数,表示匹配时不分大小写

RegExp构造函数第一个参数为正则表达式的文本内容,而第一个参数则为可选项标志.标志可以组合使用

?g (全文查找)

?i (忽略大小写)

?m (多行查找)

Js代码

  1. var re = new RegExp("a","gi");//匹配所有的a 或A

var re = newRegExp("a","gi");//匹配所有的a或A

正则表达式还有另一种正则表达式字面量的声明方式

Js代码

  1. var re = /a/gi;

var re = /a/gi;

和正则表达式相关的方法和属性

正则表达式对象的方法

?test,返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。如果存在则返回 true,否则就返回 false。

?exec,用正则表达式模式在字符串中运行查找,并返回包<scripttype="text/javascript" src="http://www.javaeye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><scripttype="text/javascript"src="http://www.javaeye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script>含该查找结果的一个数组。

?compile,把正则表达式编译为内部格式,从而执行得更快。

正则表达式对象的属性

?source,返回正则表达式模式的文本的复本。只读。

?lastIndex,返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。

?$1...$9,返回九个在模式匹配期间找到的、最近保存的部分。只读。

?input ($_),返回执行规范表述查找的字符串。只读。

?lastMatch ($&),返回任何正则表达式搜索过程中的最后匹配的字符。只读。

?lastParen ($+),如果有的话,返回任何正则表达式查找过程中最后括的子匹配。只读。

?leftContext ($`),返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。只读。

?rightContext ($‘),返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符。只读。

String对象一些和正则表达式相关的方法

?match,找到一个或多个正则表达式的匹配。

?replace,替换与正则表达式匹配的子串。

?search,检索与正则表达式相匹配的值。

?split,把字符串分割为字符串数组。

测试正则表达式是如何工作的!

Js代码

  1. //test方法,测试字符串,符 合模式时返回true,否则返回false
  2. var re = /he/;// 最简单的正则表达式,将匹配he这个单词
  3. var str = "he";
  4. alert(re.test(str));//true
  5. str = "we";
  6. alert(re.test(str));//false
  7. str = "HE";
  8. alert(re.test(str));//false,大写,如果要大小写都匹配可以指定i标志(i是ignoreCase或case- insensitive的表示)
  9. re = /he/i;
  10. alert(re.test(str));//true
  11. str = "Certainly!He loves her!";
  12. alert(re.test(str));//true,只要包含he(HE)就符合,如果要只是he或HE,不能有其它字符,则可使用^和$
  13. re = /^he/i;//脱字符(^)代表字符开始位置
  14. alert(re.test(str));//false,因为he不在str最开始
  15. str = "He is a good boy!";
  16. alert(re.test(str));//true,He是字符开始位置,还需要使用$
  17. re = /^he$/i;//$表示字符结束位置
  18. alert(re.test(str));//false
  19. str = "He";
  20. alert(re.test(str));//true
  21. //当然,这样不能发现正则表达式有多强大,因为我们完全可以在上面的例子中使用==或indexOf
  22. re = /\s/;// \s匹配任何空白字符,包括空格、制表符、换页符等等
  23. str= "user Name";// 用户名包含空格
  24. alert(re.test(str));//true
  25. str = "user     Name";//用户名包含制表符
  26. alert(re.test(str));//true
  27. re=/^[a-z]/i;//[]匹配指定范围内的任意字符,这里将匹配英文字母,不区分大小写
  28. str="variableName";// 变量名必须以字母开头
  29. alert(re.test(str));//true
  30. str="123abc";
  31. alert(re.test(str));//false

//test方法,测试字符串,符合模式时返回true,否则返回false

var re = /he/;//最简单的正则表达式,将匹配he这个单词

var str = "he";

alert(re.test(str));//true

str = "we";

alert(re.test(str));//false

str = "HE";

alert(re.test(str));//false,大写,如果要大小写都匹配可以指定i标志(i是ignoreCase或case-insensitive的表示)

re = /he/i;

alert(re.test(str));//true

str = "Certainly!He loves her!";

alert(re.test(str));//true,只要包含he(HE)就符合,如果要只是he或HE,不能有其它字符,则可使用^和$

re = /^he/i;//脱字符(^)代表字符开始位置

alert(re.test(str));//false,因为he不在str最开始

str = "He is a good boy!";

alert(re.test(str));//true,He是字符开始位置,还需要使用$

re = /^he$/i;//$表示字符结束位置

alert(re.test(str));//false

str = "He";

alert(re.test(str));//true

//当然,这样不能发现正则表达式有多强大,因为我们完全可以在上面的例子中使用==或indexOf

re = /\s/;// \s匹配任何空白字符,包括空格、制表符、换页符等等

str= "user Name";//用户名包含空格

alert(re.test(str));//true

str = "user   Name";//用户名包含制表符

alert(re.test(str));//true

re=/^[a-z]/i;//[]匹配指定范围内的任意字符,这里将匹配英文字母,不区分大小写

str="variableName";//变量名必须以字母开头

alert(re.test(str));//true

str="123abc";

alert(re.test(str));//false

正则表达式regular expression

正则表达式就是检查表达式符不符合规定.正则表达式有一个功能十分强大而又十分复杂的对象RegExp,在JavaScript1.2 版本以上提供。

下面我们来看有关正则表达式的介绍:

正则表达式对象用来规范一个规范的表达式(也就是表达式符不符合特定的要求,譬如是不是正确Email地址格式等),它具有用来检查给出的字符串是否符合 规则的属性和方法。除此之外,你用RegExp构造器建立的个别正则表达式对象的属性,就已经预先定义好了正则表达式对象的静态属性,我们随时可以使用它 们。

核心对象:

在JavaScript 1.3以后版本增加了toSource方法。

建立方法:

文字格式或RegExp构造器函数。

文字建立格式使用以下格式:

/pattern/flags即/模式/标记

构造器函数方法使用方法如下:

new RegExp("pattern"[, "flags"])即newRegExp("模式"[,"标记"])

参数:

pattern(模式)

表示正则表达式的文本

flags(标记)

如果指定此项,flags可以是下面值之一:

g: global match(全定匹配)

i: ignore case(忽略大小写)

gi: both global match and ignore case(匹配所有可能的值,也忽略大小写)

注意:文本格式中的参数不要使用引号标记,而构造器函数的参数则要使用引号标记。所以下面的表达式建立同样的正则表达式:

/hell+0/world

new RegExp("hell+o", "world")

描述:

当使用构造函数的时候,必须使用正常的字符串避开规则(在字符串中加入前导字符\ )是必须的。

例如,下面的两条语句是等价的:

re = new RegExp("\\w+")

re = /\w+/

下面提供了在正则表达式中能够使用的完整对特殊字符的一个完整的列表和描述。

1.1:正则表达式中的特殊字符:

字符\

意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,\不作解释。

eg:/b/匹配字符‘b‘,通过在b 前面加一个反斜杠\,也就是/\b/,则该字符变成特殊字符,表示匹配一个单词的分界线。

或者:

对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释。

eg1:*是一个特殊字符,匹配任意个字符(包括0个字符);

eg2:/a*/意味匹配0个或多个a。

为了匹配字面上的*,在a前面加一个反斜杠;例如:/a\*/匹配‘a*‘。

字符^

意义:表示匹配的字符必须在最前边。

例如:/^A/不匹配"an A,"中的‘A‘,但匹配"An A."中最前面的‘A‘。

字符$

意义:与^类似,匹配最末的字符。

例如:/t$/不匹配"eater"中的‘t‘,但匹配"eat"中的‘t‘。

字符*

意义:匹配*前面的字符0次或n次。

例如:/bo*/匹配"A fastbooooed"中的‘boooo‘或"Abird warbled"中的‘b‘,但不匹配"Afast grunted"中的任何字符。

字符+

意义:匹配+号前面的字符1次或n次。等价于{1,}。

例如:/a+/匹配"candy"中的‘a‘和"caaaaaaandy."中的所有‘a‘。

字符?

意义:匹配?前面的字符0次或1次。

例如:/e?le?/匹配"angel"中的‘el‘和"angle."中的‘le‘。

字符

意义:(小数点)匹配除换行符外的所有单个的字符。

例如:/.n/匹配"nay, an apple ison the tree"中的‘an‘和‘on‘,但不匹配‘nay‘。

字符(x)

意义:匹配‘x‘并记录匹配的值。

例如:/(too)/匹配和记录"toobar."中的‘too‘。匹配子串能被结果数组中的素[1],..., [n] 返回,或被RegExp对象的属性$1,..., $9返回。

字符xy

意义:匹配‘x‘或者‘y‘。

例如:/greenred/匹配"greenapple"中的‘green‘和"redapple."中的‘red‘。

字符{n}

意义:这里的n是一个正整数。匹配前面的n个字符。

例如:/a{2}/不匹配"candy,"中的‘a‘,但匹配"caandy," 中的所有‘a‘和"caaandy."中前面的两个‘a‘。

字符{n,}

意义:这里的n是一个正整数。匹配至少n个前面的字符。

例如:/a{2,}不匹配"candy"中的‘a‘,但匹配"caandy"中的所有‘a‘和"caaaaaaandy."中的所有‘a‘

字符{n,m}

意义:这里的n和m都是正整数。匹配至少n个最多m个前面的字符。

例如:/a{1,3}/不匹配"cndy"中的任何字符,但匹配 "candy,"中的‘a‘,"caandy," 中的前面两个‘a‘和"caaaaaaandy"中前面的三个‘a‘,注意:即使"caaaaaaandy" 中有很多个‘a‘,但只匹配前面的三个‘a‘即"aaa"。

字符[xyz]

意义:一字符列表,匹配列出中的任一字符。你可以通过连字符-指出一个字符范围。

例如:[abcd]跟[a-c]一样。它们匹配"brisket"中的‘b‘和"ache"中的‘c‘。

字符[^xyz]

意义:一字符补集,也就是说,它匹配除了列出的字符外的所有东西。 你可以使用连字符-指出一字符范围。

例如:[^abc]和[^a-c]等价,它们最早匹配"brisket"中的‘r‘和"chop."中的‘h‘。

字符[\b]

意义:匹配一个空格(不要与\b混淆)

字符\b

意义:匹配一个单词的分界线,比如一个空格(不要与[\b]混淆)

例如:/\bn\w/匹配"noonday"中的‘no‘,/\wy\b/匹配"possiblyyesterday."中的‘ly‘。

字符\B

意义:匹配一个单词的非分界线

例如:/\w\Bn/匹配"noonday"中的‘on‘,/y\B\w/匹配"possiblyyesterday."中的‘ye‘。

字符\cX

意义:这里的X是一个控制字符。匹配一个字符串的控制字符。

例如:/\cM/匹配一个字符串中的control-M。

字符\d

意义:匹配一个数字,等价于[0-9]。

例如:/\d/或/[0-9]/匹配"B2 is the suite number."中的‘2‘。

字符\D

意义:匹配任何的非数字,等价于[^0-9]。

例如:/\D/或/[^0-9]/匹配"B2 is the suite number."中的‘B‘。

字符\f

意义:匹配一个表单符

字符\n

意义:匹配一个换行符

字符\r

意义:匹配一个回车符

字符\s

意义:匹配一个单个white空格符,包括空格,tab,form feed,换行符,等价于[ \f\n\r\t\v]。

例如:/\s\w*/匹配"foobar."中的‘ bar‘。

字符\S

意义:匹配除white空格符以外的一个单个的字符,等价于[^\f\n\r\t\v]。

例如:/\S/\w*匹配"foobar."中的‘foo‘。

字符\t

意义:匹配一个制表符

字符\v

意义:匹配一个顶头制表符

字符\w

意义:匹配所有的数字和字母以及下划线,等价于[A-Za-z0-9_]。

例如:/\w/匹配"apple,"中的‘a‘,"$5.28,"中的‘5‘和"3D."中的‘3‘。

字符\W

意义:匹配除数字、字母外及下划线外的其它字符,等价于[^A-Za-z0-9_]。

例如:/\W/或者/[^$A-Za-z0-9_]/匹配"50%."中的‘%‘。

字符\n

意义:这里的n是一个正整数。匹配一个正则表达式的最后一个子串的n的值(计数左圆括号)。

例如:/apple(,)\sorange\1/匹配"apple, orange,cherry, peach."中的‘apple, orange‘,下面有一个更加完整的例子。

注意:如果左圆括号中的数字比\n指定的数字还小,则\n取下一行的八进制escape作为描述。

字符\ooctal和\xhex

意义:这里的\ooctal是一个八进制的escape值,而\xhex是一个十六进制的escape值,允许在一个

正则表达式中嵌入ASCII码。

当表达式被检查的时候,文字符号提供了编辑正则表达式的方法。利用文字符号可以使到正则表达

式保持为常数。例如,如果你在一个循环中使用文字符号来构造一个正则表达式,正则表达式不需进行

反复编译。

正则表达式对象构造器,例如,new RegExp("ab+c"),提供正则表达式的运行时编译。当你知道正

则表达式的模式会变化的时候,应该使用构造函数,或者你不知道正则表达式的模式,而它们是从另外

的源获得的时候,比如由用户输入时。一旦你定义好了正则表达式,该正则表达式可在任何地方使用,

并且可以改变,你可以使用编译方法来编译一个新的正则表达式以便重新使用。

一个分离预先定义的RegExp对象可以在每个窗口中使用;也就是说,每个分离的JavaScript线程运

行以获得自己的RegExp对象。因为每个脚本在一个线程中是不可中断的,这就确保了不同的脚本不会覆

盖RegExp对象的值。

预定义的RegExp对象包含的静态属性:input,multiline, lastMatch,lastParen, leftContext,

rightContext, 以及从$1到$9。input和multiline属性能被预设。其它静态属性的值是在执行个别正则

表达式对象的exec和test方法后,且在执行字符串的match和replace方法后设置的。

属性

注意RegExp对象的几个属性既有长名字又有短名字(象Perl)。这些名字都是指向相同的值。Perl是

一种编程语言,而JavaScript模仿了它的正则表达式。

属性$1, ..., $9

取得匹配的子串,如果有的话

属性$_

参考input

属性$*

参考multiline

属性$&

参考lastMatch

属性$+

参考lastParen

属性$`

参考leftContext

属性$‘

参考rightContext

属性constructor

指定用来建立对象原型函

属性global

决定是否测试正则表达式是否不能匹配所有的字符串,或者只是与最先的冲突。

属性ignoreCase

决定试图匹配字符串的时候是否忽略大小写

属性input

当正则表达式被匹配的时候,为相反的字符串。

属性lastIndex

决定下一次匹配从那里开始

属性lastMatch

最后一个匹配的字符

属性lastParen

子串匹配的时候,最后一个parenthesized,如果有的话。

属性leftContext

最近一次匹配前的子串。

属性multiline

是否在串的多行中搜索。

属性prototype

允许附加属性到所有的对象

属性rightContext

最近一次匹配后的的子串。

属性source

模式文本

方法

compile方法

编译一个正则表达式对象

exec方法

运行正则表达式匹配

test方法

测试正则达式匹配

toSource方法

返回一个对象的文字描述指定的对象;你可以使用这个值来建立一个新的对象。不考虑Object.toS

ource方法。

toString方法

返回一个字符串描述指定的对象,不考虑Object.toString对象。

valueOf方法

返回指定对角的原始值。不考虑Object.valueOf方法。

 另外,这个对象继承了对象的watch和unwatch方法

构建一个验证电子邮箱地址有效性的正则表达式。电子邮箱地址有效性要求(我们姑且这样定义):用户名只能包含字母数字以及下划线,最少一位,最多 25位,用户名后面紧跟@,后面是域名,域名名称要求只能包含字母数字和减号(-),并且不能以减号开头或结尾,然后后面是域名后缀(可以有多个),域名后缀必须是点号连上2-4位英文字母

Js代码

  1. var re = /^\w{1,15}(?:@(?!-))(?:(?:[a-z0-9-]*)(?:[a-z0-9](?!-))(?:\.(?!-)))+[a-z]{2,4}$/;

时间: 2024-07-30 12:18:47

正则表达式汇总的相关文章

常用正则表达式汇总

1.    平时做网站经常要用正则表达式,虽说可以百度,但每次都去搜搜实在是太麻烦,这里给大家汇总了常用的较完整的正则表达式, 希望能给大家带去方便和帮助:2.    "^\d+$" //非负整数(正整数 + 0)3.    "^[0-9]*[1-9][0-9]*$" //正整数4.    "^((-\d+)|(0+))$" //非正整数(负整数 + 0)5.    "^-[0-9]*[1-9][0-9]*$" //负整数6.

10个实用的PHP正则表达式汇总

原文 10个实用的PHP正则表达式汇总 正则表达式是程序开发中一个重要的元素,它提供用来描述或匹配文本的字符串,如特定的字符.词或算式等.但在某些情况下,用正则表达式去验证一个字符串比较复杂和费时.本文为你介绍10种常见的实用PHP正则表达式的写法,希望对你的工作有所帮助. 1. 验证E-mail地址 这是一个用于验证电子邮件的正则表达式.但它并不是高效.完美的解决方案.在此不推荐使用. $email = "[email protected]"; if (preg_match('/^[

PHP常用正则表达式汇总 [复制链接]

PHP常用正则表达式汇总 [复制链接] 上一主题下一主题   离线我是小猪头 法师 发帖 539 加关注 发消息 只看楼主 倒序阅读 使用道具楼主  发表于: 2011-06-22 更多 — 本帖被 jkr7 执行置顶操作(2012-08-21) — 1.    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2.    "^\d+$" //非负整数(正整数 + 0) 3.    "^[0-9]*[1-9][0-9]*$" //正整数 

js常用正则表达式汇总

常用的前台正则表达式汇总. 1.手机号验证 手机格式以1开头,现有的手机格式一般为13.14.15.17.18等 var regMobile = /^1[34578]\d{9}$/; //或者为/^1[3|4|5|7|8][0-9]\d{8}$/; if(!regMobile.test('手机号')){ alert('手机号格式不正确!'); } 2.邮箱验证 var regEmail = /^(\w-*\.*)[email protected](\w-?)+(\.\w{2,})+$/ 3.固话

Javascript常用正则表达式汇总

一.匹配数字和字符串 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数 字:"^\d{n}$". 只能输入至少n位的数字:"^\d{n,}$". 只能输入m~n位的数字:."^\d{m,n}$" 只 能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$". 只能输入有两位小数的正实数:"^[0-9]+(.[0-9]

PHP常用正则表达式汇总

1.    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2.    "^\d+$" //非负整数(正整数 + 0) 3.    "^[0-9]*[1-9][0-9]*$" //正整数 4.    "^((-\d+)|(0+))$" //非正整数(负整数 + 0) 5.    "^-[0-9]*[1-9][0-9]*$" //负整数 6.    "^-?\d+$" //整数

常用的PHP正则表达式汇总

PHP中的常用正则表达式集锦: 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> 评注:网上流传的版本太糟糕,

grep/egrep和正则表达式汇总

grep, egrep, fgrep 语法格式: grep [option] ... 'PATTERN' FILE --color=auto 对目标FILE进行搜索,显示能够匹配的行 正则表达式 基本正则: grep 扩展正则: grep -E 或者 egrep fgrep: fast但是不支持正则表达 基本正则表达式的元字符: 字符匹配: .  匹配任意单个字符 [] 匹配指定范围内的单个字符 [0-9], [[:digit:]] 单个数字 [a-z], [[:lower:]] 单个小写字符

Python正则表达式汇总

判断是否是整数或小数,在网上看到一个方法: 1 type(eval("123")) == int 2 type(eval("123.23")) == float 后来又看到<Python:eval的妙用和滥用> ,一试果然会列出当前目录的所有文件,觉得还是用正则表达式实现安全. 下面是关于正则表达式的几篇好文,介绍很详细 http://blog.csdn.net/windone0109/article/details/9094305 http://www

[技术学习]js正则表达式汇总

一.常用正则表达式关键字 ".":任意字符 "*":任意个数 "+":任意个数,至少一个 "?":0-1个 "\d":任意个数数字,至少一个 digit "\w":任意数字字母,下划线 word "\s":任意空白,空格,tab,换行符,至少一个 space \:转义符 []:匹配一些字符 -:例如0-5,从几到几 ^:任意的非字符 \S:所有非空白 {4}:字符出现