hjr-正则表达式

首先是思路
要匹配一段文本中的所有符合某个条件的文本段。

比如在abcdacdssd中匹配 (a任意字母b) 共三个字母这个结构的文本段

我们先想到句首是a,所以先是^a然后共一个所以就是^a?这样就匹配了ab和ac。

常用的特殊代码

代码/语法说明
.匹配除换行符以外的任意字符
\w匹配字母或数字
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

常用的量词

代码/语法说明
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

常用的反义代码

代码/语法说明
\W匹配任意不是字母和数字的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B匹配不是单词开头或结束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou这几个字母以外的任意字符

分组语法

捕获

代码/语法说明
(exp)匹配exp,并捕获文本到自动命名的组里
(?exp)匹配exp,并捕获文本到名称为name的组里
(?:exp)匹配exp,不捕获匹配的文本

位置指定

代码/语法说明
(?=exp)匹配exp前面的位置
(?<=exp)匹配exp后面的位置
(?!exp)匹配后面跟的不是exp的位置
(?匹配前面不是exp的位置

注释

代码/语法说明
(?#comment)无作用,只是为了提供让人阅读注释

断言

代码/语法说明
(?<= #断言要匹配的文本的前缀
<(\w+)> #查找尖括号括起来的字母或数字(即HTML/XML标签)
) #前缀结束
.* #匹配任意文本
(?= #断言要匹配的文本的后缀
<\/\1> #查找尖括号括起来的内容:前面是一个”/”,后面是先前捕获的标签
) #后缀结束

懒惰限定符

代码/语法说明
*?重复任意次,但尽可能少重复
+?重复0次或1次,但尽可能少重复
{n,m}?重复n到m次,但尽可能少重复

常用的处理选项

代码/语法说明
IgnoreCase(忽略大小写)匹配时不区分大小写
Singleline(单行模式)更改.的含义,使它与每一个字符匹配(包括换行符\n)。
IgnorePatternWhitespace(忽略空白)忽略表达式中的非转义空白并启用由#标记的注释。
ExplicitCapture(显式捕获)仅捕获已被显式命名的组。
(?’group’)把捕获的内容命名为group,并压入堆栈(Stack)。
(?’-group’)从堆栈上弹出最后压入堆栈的名为group的捕获内容,如果堆栈本来为空,则本分组的匹配失败。
(?!)零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败。

Multiline(多行模式):更改^和$的含义,

使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配\n之前的位置以及字符串结束前的位置.)

应用

引入validform.js和jqoery文件

        $(function(){
            ck = $(".validform").Validform({
                tiptype:3,
                    datatype:{//传入自定义datatype类型,可以是正则,也可以是函数(函数内会传入一个参数);
            "*6-20": /^[^\s]{6,20}$/,
            "username":function(gets,obj,curform,regxp){
                //参数gets是获取到的表单元素值,obj为当前表单元素,curform为当前验证的表单,regxp为内置的一些正则表达式的引用;
                var reg1=/^[\w\.]{4,16}$/,
                    reg2=/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,8}$/;

                if(reg1.test(gets)){return true;}
                if(reg2.test(gets)){return true;}
                return false;
                //注意return可以返回truefalse 或 字符串文字,true表示验证通过,返回字符串表示验证失败,字符串作为错误提示显示,返回false则用errmsg或默认的错误提示;
            }
            });
          });
        //如果是input type=submit form提交,下面的就不用写
          function doAjax(){
                if(!ck.check())
                {
                    return;
                }
                //下面可以写AJAX代码
        }

//html
<ul style="list-style-type:none">
<li>
用户&#12288;名:
<input datatype="s3-10" sucmsg="成功" errormsg="失败" type="text" name="userName" id="userName" maxlength="50"/>
<span class="Validform_checktip">*用户名为3~10个字符</sapn>
</li>
<li>
<button onclick="doAjax()"></button>
<!-- <input type="submite"></input> -->
</li>
</ul>

这是一个表单验证插件,这个支持自定义正则验证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构师小侯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值