关键词搜索

源码搜索 ×
×

JavaScript对象之正则表达式-RegExp

发布2016-08-24浏览1406次

详情内容

正则表达式在很多地方都会用到,应用最多的就是JS的表达验证,下面来学习怎么使用正则表达式。在JavaScript中用RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

RegExp正则表达式语法

new RegExp(pattern, attributes);

参数

1.参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

2.参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回pattern,而不再创建一个新的 RegExp 对象。

异常抛出

注:异常是指程序出错,JS在出错的情况下不能继续往下执行,键盘按“F12”查看控制台,浏览器控制台会抛出错误信息。

SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。

TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。


RegExp常用示例

  1. /* ---------------------------------RegExp 校验模式-----------------------------*/
  2. //语法:RegExpObject.test(string)
  3. //说明:test() 方法检索字符串中的指定值。返回值是 true 或 false
  4. var re1 = new RegExp("^\\s+$","g");
  5. var msg = re1.test("he llo");
  6. alert(msg);
  7. //语法:RegExpObject.exec(string)
  8. //说明:exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null
  9. var a;
  10. var re2 = new RegExp("e", "g");
  11. do {
  12. a = re2.exec("hello world hi!");
  13. alert(a);
  14. }
  15. while (a != null);
  16. //语法:stringObject.search(regexp)
  17. //说明:search() 从字符串的开始进行检索,总是返回stringObject的第一个匹配的位置
  18. /* ---------------------------------String 校验模式-----------------------------*/
  19. //校验是否全由数字组成
  20. function isDigit(s)
  21. {
  22. var patrn=/^[0-9]{1,20}$/;
  23. if (!patrn.exec(s)) return false
  24. return true
  25. }
  26. //校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串
  27. function isRegisterUserName(s)
  28. {
  29. var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
  30. if (!patrn.exec(s)) return false
  31. return true
  32. }
  33. //校验用户姓名:只能输入1-30个以字母开头的字串
  34. function isTrueName(s)
  35. {
  36. var patrn=/^[a-zA-Z]{1,30}$/;
  37. if (!patrn.exec(s)) return false
  38. return true
  39. }
  40. //校验密码:只能输入6-20个字母、数字、下划线
  41. function isPasswd(s)
  42. {
  43. var patrn=/^(\w){6,20}$/;
  44. if (!patrn.exec(s)) return false
  45. return true
  46. }
  47. //校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
  48. function isTel(s)
  49. {
  50. //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;
  51. var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
  52. if (!patrn.exec(s)) return false
  53. return true
  54. }
  55. //校验手机号码:必须以数字开头,除数字外,可含有“-”
  56. function isMobil(s)
  57. {
  58. var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
  59. if (!patrn.exec(s)) return false
  60. return true
  61. }
  62. //校验邮政编码
  63. function isPostalCode(s)
  64. {
  65. //var patrn=/^[a-zA-Z0-9]{3,12}$/;
  66. var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
  67. if (!patrn.exec(s)) return false
  68. return true
  69. }
  70. //校验搜索关键字
  71. function isSearch(s)
  72. {
  73. var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/;
  74. if (!patrn.exec(s)) return false
  75. return true
  76. }
  77. function isIP(s) //by zergling
  78. {
  79. var patrn=/^[0-9.]{1,20}$/;
  80. if (!patrn.exec(s)) return false
  81. return true
  82. }
  83. /*----------------------------------JQuery 正则表达式验证器-------------------------*/
  84. // 使用方法-input标签验证类型,如: validType="PLAIN"
  85. $.extend($.fn.validatebox.defaults.rules, {
  86. CHS: {
  87. validator: function (value, param) {
  88. return /^[\u0391-\uFFE5]+$/.test(value);
  89. },
  90. message: '请输入汉字'
  91. },
  92. PLAINLENGTH: {
  93. validator: function (value, param) {
  94. return /^[A-Za-z0-9\u4e00-\u9fa5]{0,20}$/.test(value);
  95. },
  96. message: '请输入20个以内的中英文以及数字'
  97. },
  98. GoodsLevel: {
  99. validator: function (value, param) {
  100. return /^0[0-6]{1}$/.test(value);
  101. },
  102. message: '请输入00到06之间的'
  103. },
  104. STANDLENGTH: {
  105. validator: function (value, param) {
  106. return /^[A-Za-z%\.0-9\u4e00-\u9fa5]{0,20}$/.test(value);
  107. },
  108. message: '请输入20个以内的中英文数字以及百分号'
  109. },
  110. DECIMAL: {
  111. validator: function (value, param) {
  112. return /^[123456789]\d{0,7}(\.\d{1,2})?$/.test(value);
  113. },
  114. message: '请输入正确的数据,只保留两位小数'
  115. },
  116. PERCENT: {
  117. validator: function (value, param) {
  118. return /^\d+\.?\%$/.test(value);
  119. },
  120. message: '请输入正确的比例(50%)'
  121. },
  122. SCORE: {
  123. validator: function (value, param) {
  124. return /^\d{2}:\d{2}$/.test(value);
  125. },
  126. message: '请输入正确的比例(00:00)'
  127. },
  128. ENFUN: {
  129. validator: function (value, param) {
  130. return /^[A-Za-z_\-\\(\\)]+$/.test(value);
  131. },
  132. message: '请输入正确的函数名 例:test()'
  133. },
  134. LETTER: {
  135. validator: function (value, param) {
  136. return /^[A-Za-z]+$/.test(value);
  137. },
  138. message: '请输入英文字母'
  139. },
  140. LOWER_LETTER: {
  141. validator: function (value, param) {
  142. return /^[a-z]+$/.test(value);
  143. },
  144. message: '请输入小写英文字母'
  145. },
  146. EN: {
  147. validator: function (value, param) {
  148. return /^[A-Za-z\-]+$/.test(value);
  149. },
  150. message: '请输入英文字母,可以包含(-)'
  151. },
  152. PLAIN: {
  153. validator: function (value, param) {
  154. return /^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(value);
  155. },
  156. message: '请输入中英文以及数字'
  157. },
  158. IMAGE: {
  159. validator: function (value, param) {
  160. return /^\S+\.(jpg|gif|jpeg|png|bmp)$/.test(value);
  161. },
  162. message: '请输入正确的图片类型'
  163. },
  164. URL: {
  165. validator: function (value, param) {
  166. return /^\S+\.html$/.test(value);
  167. },
  168. message: '请输入正确的url地址'
  169. },
  170. LINK: {
  171. validator: function (value, param) {
  172. return /(?:https|http|ftp|rtsp|mms):\/\/.+/.test(value);
  173. },
  174. message: '请输入正确的url地址'
  175. },
  176. ZIP: {
  177. validator: function (value, param) {
  178. return /^[1-9]\d{5}$/.test(value);
  179. },
  180. message: '邮政编码不存在'
  181. },
  182. QQ: {
  183. validator: function (value, param) {
  184. return /^[1-9]\d{4,10}$/.test(value);
  185. },
  186. message: 'QQ号码不正确'
  187. },
  188. mobile: {
  189. validator: function (value, param) {
  190. return /^[1][3458][0-9]{9}$/.test(value);
  191. },
  192. message: '手机号码不正确'
  193. },
  194. notEmpty: {
  195. validator: function (value, param) {
  196. return /^.*$/.test(value);
  197. },
  198. message: '该项不能为空'
  199. },
  200. loginName: {
  201. validator: function (value, param) {
  202. //return /^[\u0391-\uFFE5\w]+$/.test(value);
  203. return /^\w{3,20}$/.test(value);
  204. },
  205. //message: '请输入中英文,数字以及下划线'
  206. message: '请输入3-20位数字、字母、下划线'
  207. },
  208. safepass: {
  209. validator: function (value, param) {
  210. return safePassword(value);
  211. },
  212. message: '密码由字母和数字组成,6-20位'
  213. },
  214. equalTo: {
  215. validator: function (value, param) {
  216. return value == $(param[0]).val();
  217. },
  218. message: '两次输入的密码不一致'
  219. },
  220. number: {
  221. validator: function (value, param) {
  222. return /^\d+$/.test(value);
  223. },
  224. message: '请输入数字'
  225. },
  226. idcard: {
  227. validator: function (value, param) {
  228. return idCard(value);
  229. },
  230. message:'请输入正确的身份证号码'
  231. },
  232. //座机
  233. tel: {
  234. validator: function (value, param) {
  235. var phone = /^0\d{2,3}-?\d{7,8}$/;
  236. return phone.test(value);
  237. },
  238. message:'请输入正确的电话号码'
  239. },
  240. selectValueRequired: {
  241. validator: function (value, param) {
  242. return $(param[0]).combobox('getValue') !='';
  243. },
  244. message: '请选择下拉数据'
  245. },
  246. //传真
  247. fax: {
  248. validator: function (value, param) {
  249. var phone = /^0\d{2,3}-?\d{7,8}$/;
  250. return phone.test(value);
  251. },
  252. message:'请输入正确的传真号码'
  253. },
  254. //电话验证(是否是手机或座机)
  255. mobileOrTel: {
  256. validator: function (value, param) {
  257. var mobile = /^[1][23456789][0-9]{9}$/ , phone = /^(\d{3,4}-)?\d{7,8}$/; var freePhone = /^[48]00/;
  258. return mobile.test(value) || phone.test(value) || freePhone.test(value);
  259. },
  260. message:'请输入正确的电话号码'
  261. },
  262. positive:{
  263. validator: function (value, param) {
  264. var pos = /^[0-9]*[1-9][0-9]*$/;
  265. return pos.test(value);
  266. },
  267. message:'请输入正整数'
  268. },
  269. warehousecode:{
  270. validator: function (value, param) {
  271. return /^[A-Za-z0-9]{5}$/.test(value);
  272. },
  273. message:'请输入五位数字或英文'
  274. },
  275. UNLIMITDECIMAL: {
  276. validator: function (value, param) {
  277. return /^\d{1,10}(\.\d{1,10})?$/.test(value);
  278. },
  279. message: '请输入正确的数据,只保留两位小数'
  280. },
  281. ENONE:{
  282. validator: function (value, param) {
  283. return /^[A-Za-z]{1}$/.test(value);
  284. },
  285. message: '请输入一位英文字母'
  286. },
  287. LOCATIONCODE:{
  288. validator: function (value, param) {
  289. return /^[A-Za-z0-9\-]{9}$/.test(value);
  290. },
  291. message: '请输入9位库位编号'
  292. },
  293. LONGITUDE:{
  294. validator: function (value, param) {
  295. return value>=-180.000000&&value<=180.000000;
  296. },
  297. message: '请输入有效经度'
  298. },
  299. LATITUDE:{
  300. validator: function (value, param) {
  301. return value>=-90.000000&&value<=90.000000;
  302. },
  303. message: '请输入有效纬度'
  304. }
  305. });


相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载