由于本人大部分处理后台代码,很少用到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