发表于: 2017-06-29 22:32:15

2 1072


正则表达式

编写验证规则最流行和最简单的方法就是正则表达式了,但唯一的一个问题是正则表达式的语法太隐晦了,让人蛋疼无比。很多开发者为了在项目中应用复杂的验证,经常要使用一些小抄来记住正则式的复杂语法和各种常用命令。

正则表达式基础

正则表达式可以帮助我们更好的描述复杂的文本格式。一旦你描述清楚了这些格式,那你就可以利用它们对文本数据进行检索、替换、提取和修改操作。其实说白了就是对字符串进行操作,一个简单的应用就是邮箱验证。

开始正则表达式

1 第一步要引用相关的正则式的明明空间

  1. using System.Text.RegularExpressions;  

2 第二步就是用指定的正则表达式构建一个正则表达式对象。下面是用来搜索长度为10a-z的字母

  1. Regx obj = Regx("[a-z]{10}");  

3 最后根据正则式在指定数据中匹配项,如果匹配IsMatch方法就会返回true

  1. MessageBox.show(obj.IsMatch("hellochina").ToString());  

三个重要的正则式命令

记住正则语法最好的办法就是记住这三样东西:Bracket(括号), caret(插入符号)和Dollars(美元符号)。

                                             

B
在正则表达式中有3种类型的括号
方括号 “[“和花括号“{“ 。
方括号"["内是需要匹配的字符,花括号"{"内是指定匹配字符的数量。
圆括号“(“ 则是用来分组的。
C
插入符号 “^” 表示正则式的开始。
D
美元符号“$” 表示正则式的结束。
现在你知道上面的3个语法后,你就可以写世界上任何一条验证规则了。比如下面的例子就很好的说明了上面3条正则语法是如何协调运作的。

简单应用

让我们开始第一个验证,输入的字符在a-g之间?

  1.  [a-g]  

输入的字符在a-g之间并且最大长度为3最小长度为1

  1.  [a-g]{1,3}  

我如何在匹配像91230456, 01237648那样的固定8位数?

  1. ^[0-9]{8}$  

如何验证像LJI1020那样的发票编号,前3个是字母剩余为8位长度的数字?

  1. ^[a-z]{3}[0-9]{7}$  
         
    我们可以验证简单的网址URL格式吗?
  1. ^www[.][a-z]{1,15}[.](com|org)$  
         
    验证值在0-25的数字:
  1. ^[0-9] | ( [0][9][0][9] ) | ( [0-2][0-5])$  

快捷命令
[0-9]
d[a-z][0-9][_]w0次或多次发生:*;至少一次发生:+0次或1次发生:?


1、任务编辑Article状态下,提交按钮接口报错(postman一样),暂时没找到原因(其他师兄相同接口正常),由于只剩这一个提交没有完成,暂时放一下,做后面的表单验证及富文本。
2、提交按钮,增加ng-disabled属性,form1为form表单name属性,form1.$invalid表示整个表单存在错误输入时禁用。注意需要单独增加ng-class样式(或者应用bs插件),否则原生禁用按钮样式不会改变,只是不能点击。

<button type="submit" ng-click="submitDraft()" ng-class="{'ng-disabled':form1.$invalid}" ng-disabled="form1.$invalid">存为草稿</button>

//css样式

.ng-disabled {cursor: not-allowed;opacity: 0.6}

3、标题栏样式为text,只设置了长度4-32,点击后必填,错误状态时外框变红,文字变红,同时下面弹出提示信息。

4、行业大图对应的子选项下拉框

<select ng-show="type=='行业大图'" ng-required="type=='行业大图'"  style="margin-left: .5em;" name="industry" id="industry" ng-model="industry">

使用nf-show判定子选框的显示和隐藏时,由于本身dom存在(display为none),直接使用required属性,会导致子选框隐藏状态下,表单的disabled始终无法提交,所以增加了ng-required进行判定。

使用ng-if时,由于是dom直接移除,可以直接使用required属性,但是后面会影响双向绑定数据的读取,所以这里还是使用的ng-show。

5、说明框暂时未加限制,后面需要使用富文本。

6、url框,使用type=”url”,增加报错样式和文本报错提示框。

收获:看了富文本资料,基于JQ的高级模式文本输入框,使用上手应该不困难。重新做了文本框验证,学习了下拉框的一些属性特征。看了正则表达式,确实深奥难懂,没有结合实际应用,理解还是太困难。

困难:系列任务终于快结束了,整体代码还是写的很乱,封装和自定义好像都没有完全应用,接下来有时间会多了解相关知识并优化代码。

计划:完成任务基本功能布局,优化代码。







返回列表 返回列表
评论

    分享到