首先我们上几个案例看看
<el-form-item label="客户号:" prop="cucuno">
<el-input v-model="testForm.cucuno" placeholder="输入客户号" οninput="value=value.replace(/[^a-zA-Z0-9]/ig,'')"/>
</el-form-item>
<el-form-item label="电话号码:" prop="cutlno">
<el-input v-model="testForm.cutlno" placeholder="输入电话号码" οninput="value=value.replace(/[^\d]/g, '')"/>
</el-form-item>
<el-form-item label="开户机构代码:" prop="cuopnt">
<el-input v-model="testForm.cuopnt" placeholder="输入开户机代号" οninput="value=value.replace(/[^a-zA-Z0-9]/ig,'')"/>
</el-form-item>
<el-form-item label="备注:" prop="remark">
<el-input v-model="testForm.remark" placeholder="请输入中文备注" οnkeyup="value=value.replace(/[^\u4e00-\u9fa5]/g,'')"/>
</el-form-item>
在以上代码中,输入客户号,输入开户及机构代号的规则是直允许输入英文,中文字符,,输入其他的字符会被替换‘’,输入电话号码的规则则是,只允许输入数字,备注则是只允许输入中文字符。如果有仔细的小伙伴则会发现,备注input框的监听事件和上面三个不一样,那是因为在输入中文字符的时候,如果用input事件,会监听输入的每一个字母按键(个人暂时这么理解),而用onkeyup则是当输入一个需要完成的字符后(该字符可以为中文,英文,特殊字符等),总而言之在实现中文的时候,用onkeyup事件。
相信很多人在没有理解正则表达式的语法之前,看写出来的正则表达式都是一头懵。
下面,首先针对我写的正则表达式来解释下
A、js里,把两个/之间的字符串表示一个正则表达式
B、/^/这种情况表示以...开头
C、/[^]/这种情况表示非
D、Flags 写在结束的/之后,可以影响整个正则表达式的匹配行为。常见的 flags 有:
g:全局匹配(global);正则表达式默认只会返回第一个匹配结果,使用标志符g则可以返回所有匹配
i:忽略大小写(case-insensitive);在匹配时忽略英文字母的大小写
m:多行匹配(multiline);将开始和结束字符(^和$)视为在多行上工作,即分别匹配每一行(由 \n 或 \r 分割)的开始和结束,而不只是只匹配整个输入字符串的最开始和最末尾处
有了上面这一段的介绍,对于我写的正则大致有了一个了解
下面介绍下正则中的一些字符
特殊字符
字符集
用于匹配字符集合中的任意一个字符,常见的字符集有:
[xyz]:匹配 "x"或"y"``"z"
[^xyz]:补集,匹配除 "x" "y" "z"的其他字符
[a-z]:匹配从 "a" 到 "z" 的任意字符
[^a-n]:补集,匹配除 "a" 到 "n" 的其他字符
[A-Z]:匹配从 "A" 到 "Z" 的任意字符
[0-9]:匹配从 "0" 到 "9" 的任意数字
比如匹配所有的字母和数字可以写成:/[a-zA-Z0-9]/ 或者 /[a-z0-9]/i。
元字符
在正则表达式中有一些具有特殊含义的字母,被称为元字符,简言之,元字符就是描述字符的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。
常见的元字符有:
\d:匹配任意数字,等价于 [0-9]
\D:匹配任意非数字字符;\d 的补集
\w:匹配任意基本拉丁字母表中的字母和数字,以及下划线;等价于 [A-Za-z0-9_]
\W:匹配任意非基本拉丁字母表中的字母和数字,以及下划线;\w 的补集
\s:匹配一个空白符,包括空格、制表符、换页符、换行符和其他 Unicode 空格
\S:匹配一个非空白符;\s的补集
\b:匹配一个零宽单词边界,如一个字母与一个空格之间;例如,/\bno/ 匹配 "at noon" 中的 "no",/ly\b/ 匹配 "possibly yesterday." 中的 "ly"
\B:匹配一个零宽非单词边界,如两个字母之间或两个空格之间;例如,/\Bon/ 匹配 "at noon" 中的 "on",/ye\B/ 匹配 "possibly yesterday."中的 "ye"
\t:匹配一个水平制表符(tab)
\n:匹配一个换行符(newline)
\r:匹配一个回车符(carriage return)
量词
在实际使用中常需要匹配同一类型的字符多次,比如匹配 11 位的手机号,我们不可能将 [0-9] 写 11 遍,此时可以使用 量词 来实现重复匹配。
{n}:匹配 n 次
{n,m}:匹配 n-m 次
{n,}:匹配 >=n 次
?:匹配 0 || 1 次
*:匹配 >=0 次,等价于 {0,}
+:匹配 >=1 次,等价于 {1,}
如果你看到这里,对于正则还没有一个大致的了解,你可以先去看下以下这篇文章:
https://www.runoob.com/regexp/regexp-intro.html