天下之事,必先处之难,而后易之。

JavaScript对象之正则表达式-RegExp

正则表达式在很多地方都会用到,应用最多的就是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常用示例

/* ---------------------------------RegExp  校验模式-----------------------------*/
//语法:RegExpObject.test(string)
//说明:test() 方法检索字符串中的指定值。返回值是 true 或 false
var re1 = new RegExp("^\\s+$","g");
var msg = re1.test("he llo");
alert(msg);
 
//语法:RegExpObject.exec(string)
//说明:exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null
var a;
var re2 = new RegExp("e", "g");
do {
    a = re2.exec("hello world hi!");
    alert(a);
}
while (a != null);

//语法:stringObject.search(regexp)
//说明:search() 从字符串的开始进行检索,总是返回stringObject的第一个匹配的位置 

/* ---------------------------------String 校验模式-----------------------------*/

//校验是否全由数字组成
function isDigit(s)
{
var patrn=/^[0-9]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}

//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串
function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}

//校验用户姓名:只能输入1-30个以字母开头的字串
function isTrueName(s)
{
var patrn=/^[a-zA-Z]{1,30}$/;
if (!patrn.exec(s)) return false
return true
}

//校验密码:只能输入6-20个字母、数字、下划线
function isPasswd(s)
{
var patrn=/^(\w){6,20}$/;
if (!patrn.exec(s)) return false
return true
}

//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
function isTel(s)
{
//var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}

//校验手机号码:必须以数字开头,除数字外,可含有“-”
function isMobil(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}

//校验邮政编码
function isPostalCode(s)
{
//var patrn=/^[a-zA-Z0-9]{3,12}$/;
var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
if (!patrn.exec(s)) return false
return true
}

//校验搜索关键字
function isSearch(s)
{
var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false
return true
}
function isIP(s) //by zergling
{
var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}

/*----------------------------------JQuery 正则表达式验证器-------------------------*/
// 使用方法-input标签验证类型,如: validType="PLAIN"
$.extend($.fn.validatebox.defaults.rules, {
    CHS: {
        validator: function (value, param) {
            return /^[\u0391-\uFFE5]+$/.test(value);
        },
        message: '请输入汉字'
    },
    PLAINLENGTH: {
        validator: function (value, param) {
            return /^[A-Za-z0-9\u4e00-\u9fa5]{0,20}$/.test(value);
        },
        message: '请输入20个以内的中英文以及数字'
    },
    GoodsLevel: {
        validator: function (value, param) {
            return /^0[0-6]{1}$/.test(value);
        },
        message: '请输入00到06之间的'
    },
    STANDLENGTH: {
        validator: function (value, param) {
            return /^[A-Za-z%\.0-9\u4e00-\u9fa5]{0,20}$/.test(value);
        },
        message: '请输入20个以内的中英文数字以及百分号'
    },
    DECIMAL: {
        validator: function (value, param) {
            return /^[123456789]\d{0,7}(\.\d{1,2})?$/.test(value);
        },
        message: '请输入正确的数据,只保留两位小数'
    },
    PERCENT: {
        validator: function (value, param) {
            return /^\d+\.?\%$/.test(value);
        },
        message: '请输入正确的比例(50%)'
    },
    SCORE: {
        validator: function (value, param) {
            return /^\d{2}:\d{2}$/.test(value);
        },
        message: '请输入正确的比例(00:00)'
    },
    ENFUN: {
        validator: function (value, param) {
            return /^[A-Za-z_\-\\(\\)]+$/.test(value);
        },
        message: '请输入正确的函数名 例:test()'
    },
   LETTER: {
        validator: function (value, param) {
            return /^[A-Za-z]+$/.test(value);
        },
        message: '请输入英文字母'
    },
     LOWER_LETTER: {
        validator: function (value, param) {
            return /^[a-z]+$/.test(value);
        },
        message: '请输入小写英文字母'
    },
    EN: {
        validator: function (value, param) {
            return /^[A-Za-z\-]+$/.test(value);
        },
        message: '请输入英文字母,可以包含(-)'
    },
    PLAIN: {
        validator: function (value, param) {
            return /^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(value);
        },
        message: '请输入中英文以及数字'
    },
    IMAGE: {
        validator: function (value, param) {
            return /^\S+\.(jpg|gif|jpeg|png|bmp)$/.test(value);
        },
        message: '请输入正确的图片类型'
    },
    URL: {
        validator: function (value, param) {
            return /^\S+\.html$/.test(value);
        },
        message: '请输入正确的url地址'
    },
    LINK: {
        validator: function (value, param) {
            return /(?:https|http|ftp|rtsp|mms):\/\/.+/.test(value);
        },
        message: '请输入正确的url地址'
    },
    ZIP: {
        validator: function (value, param) {
            return /^[1-9]\d{5}$/.test(value);
        },
        message: '邮政编码不存在'
    },
    QQ: {
        validator: function (value, param) {
            return /^[1-9]\d{4,10}$/.test(value);
        },
        message: 'QQ号码不正确'
    },
    mobile: {
        validator: function (value, param) {
            return /^[1][3458][0-9]{9}$/.test(value);
        },
        message: '手机号码不正确'
    },
    notEmpty: {
        validator: function (value, param) {
            return /^.*$/.test(value);
        },
        message: '该项不能为空'
    },
    loginName: {
        validator: function (value, param) {
            //return /^[\u0391-\uFFE5\w]+$/.test(value);
            return /^\w{3,20}$/.test(value);
        },
        //message: '请输入中英文,数字以及下划线'
         message: '请输入3-20位数字、字母、下划线'
    },
    safepass: {
        validator: function (value, param) {
            return safePassword(value);
        },
        message: '密码由字母和数字组成,6-20位'
    },
    equalTo: {
        validator: function (value, param) {
            return value == $(param[0]).val();
        },
        message: '两次输入的密码不一致'
    },
    number: {
        validator: function (value, param) {
            return /^\d+$/.test(value);
        },
        message: '请输入数字'
    },
    idcard: {
        validator: function (value, param) {
            return idCard(value);
        },
        message:'请输入正确的身份证号码'
    },
    //座机
    tel: {
        validator: function (value, param) {
            var phone = /^0\d{2,3}-?\d{7,8}$/;
            return phone.test(value);
        },
        message:'请输入正确的电话号码'
    },
    selectValueRequired: {
        validator: function (value, param) {
            return $(param[0]).combobox('getValue') !='';
        },
        message: '请选择下拉数据'
    },
    //传真
    fax: {
        validator: function (value, param) {
            var phone = /^0\d{2,3}-?\d{7,8}$/;
            return phone.test(value);
        },
        message:'请输入正确的传真号码'
    },
    //电话验证(是否是手机或座机)
    mobileOrTel: {
        validator: function (value, param) {
            var mobile = /^[1][23456789][0-9]{9}$/ , phone =  /^(\d{3,4}-)?\d{7,8}$/; var freePhone = /^[48]00/;
            return mobile.test(value) || phone.test(value) || freePhone.test(value);
        },
        message:'请输入正确的电话号码'
    },
    positive:{
        validator: function (value, param) {
            var pos = /^[0-9]*[1-9][0-9]*$/;
            return pos.test(value);
        },
        message:'请输入正整数'
    },
    warehousecode:{
        validator: function (value, param) {
            return /^[A-Za-z0-9]{5}$/.test(value);
        },
        message:'请输入五位数字或英文'
    },
    UNLIMITDECIMAL: {
        validator: function (value, param) {
            return /^\d{1,10}(\.\d{1,10})?$/.test(value);
        },
        message: '请输入正确的数据,只保留两位小数'
    },
    ENONE:{
        validator: function (value, param) {
            return /^[A-Za-z]{1}$/.test(value);
        },
        message: '请输入一位英文字母'
    },
    LOCATIONCODE:{
        validator: function (value, param) {
            return /^[A-Za-z0-9\-]{9}$/.test(value);
        },
        message: '请输入9位库位编号'
    },
    LONGITUDE:{
        validator: function (value, param) {
            return value>=-180.000000&&value<=180.000000;
        },
        message: '请输入有效经度'
    },
    LATITUDE:{
        validator: function (value, param) {
            return value>=-90.000000&&value<=90.000000;
        },
        message: '请输入有效纬度'
    }
});




posted @ 2023-07-18 20:05  boonya  阅读(128)  评论(0)    收藏  举报  来源
我有佳人隔窗而居,今有伊人明月之畔。
轻歌柔情冰壶之浣,涓涓清流梦入云端。
美人如娇温雅悠婉,目遇赏阅适而自欣。
百草层叠疏而有致,此情此思怀彼佳人。
念所思之唯心叩之,踽踽彳亍寤寐思之。
行云如风逝而复归,佳人一去莫知可回?
深闺冷瘦独自徘徊,处处明灯影还如只。
推窗见月疑是归人,阑珊灯火托手思忖。
庐居闲客而好品茗,斟茶徐徐漫漫生烟。

我有佳人在水之畔,瓮载渔舟浣纱归还。
明月相照月色还低,浅近芦苇深深如钿。
庐山秋月如美人衣,画堂春阁香气靡靡。
秋意幽笃残粉摇曳,轻轻如诉画中蝴蝶。
泾水潺潺取尔浇园,暮色黄昏如沐佳人。
青丝撩弄长裙翩翩,彩蝶飞舞执子手腕。
香带丝缕缓缓在肩,柔美体肤寸寸爱怜。
如水之殇美玉成欢,我有佳人清新如兰。
伊人在水我在一边,远远相望不可亵玩。