由于本人大部分处理后台代码,很少用到Javascript。最近的项目做前端,用到Js和正则,特发此文,总结一下。
参考W3cSchool和其他的网上信息。
如有问题,欢迎指正.
使用JS和正则的较多的情况:表单验证、正则替换字符串等等……
正则的初始化
var reg=new RegExp(pattern, attributes); //第一个参数pattern:就是传入正则表达式的 //第二个参数 attributes:包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。最常用的为"g"
RegExp对象包括三个方法
1、text():方法检索字符串中的指定值。返回值为bool类型,即true 或 false
<script type="text/javascript"> var pattern = "_n$";//正则表达式 var reg = new RegExp(pattern, "g"); alert(reg.test("abc_n")); </script>
2、exec():方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
<script type="text/javascript"> var pattern = "abc_n$";//正则表达式 var reg = new RegExp(pattern, "g"); alert(reg.exec("abc")); //弹出框为null var reg1 = new RegExp(pattern, "g"); alert(reg1.exec("abc_n")); //弹出框为abc_n </script>
3、compile():暂时没有用到,以后用到的话再继续补充
支持正则表达式的 String 对象的方法
有四个方法
1、search():检索与正则表达式相匹配的值。
2、math():找到一个或多个正则表达式的匹配。
3、replace():替换与正则表达式匹配的子串。
4、split():把字符串分割为字符串数组。
项目中用到了replace,今天就着重讲一下replace
<script type="text/javascript"> //将字符串最后的_n替换掉 var pattern = "_n$"; //正则表达式 var inputstr = "enabled"; //要替换的字符串 var reg = new RegExp(pattern, "g"); alert(inputstr.replace(reg, ""));//第一个参数为正则表达式,第二个参数为要替换的新字符 </script>
以下是一些常用的正则表达式,可能有个别的存在bug,是自己累积和写的:
Decimal:^\d{0,16}\.?\d{0,2}$ 手机号:^1[3,5,8]\d{9}$ 文件:\w+(\.txt|\.doc|\.docx|\.xls|\.xlsx) 图片:^\w+(\.gif|\.jpg|\.png|\.jpeg)$ 数字和字母:^([0-9]|[0-9a-zA-Z]|[a-zA-Z]){6,16}$ 去除非法字符(反义):^[^/\\<>*?@]{6,}$ /// <summary> /// 常用正则 /// </summary> public abstract class Patterns { /// <summary> /// 单个字母 /// </summary> public const string SINGLE_LETTER = @"^\w$"; /// <summary> /// 正确文件名是否有非法字符 /// </summary> public const string FILENAME = @"[/\\<>*?]"; /// <summary> /// 图片格式扩展名 /// </summary> public const string IMAGE_EXTS = @"\.gif|\.jpg|\.jpeg|\.png|\.bmp"; /// <summary> /// 单个电子邮箱地址 /// </summary> public const string EMAIL = @"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"; /// <summary> /// 密码,非空格,tab符以外的任意字符 /// </summary> public const string Password = "^[^\\s]{6,16}$"; /// <summary> /// 一批 E-Mail 地址(单角分号分隔) /// </summary> public const string BATCH_EMAIL = @"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(;\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*$"; /// <summary> /// ID串,形如1(,2,3,4)* /// </summary> public const string IDS = @"^\d+(,\d+)*$"; /// <summary> /// 字母+数字的组合 /// </summary> public const string WORD_NUMERAL_COMBO = @"(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{2,})$"; /// <summary> /// 纯数字 /// </summary> public const string NUMERAL = @"^\d+$"; }
这篇文章比较全面:http://www.blogjava.net/pingpang/archive/2012/08/12/385342.html