正则表达式
入门教程
正则表达式30分钟入门教程
某个字符串匹配某个正则表达式,通常是指这个字符串里有一部分(或几部分分别)能满足表达式给出的条件
特殊字符
如果需要这些字符用作文本字符,需要用反斜杠\对其进行转义。
分别为:(
)
[
]
{
}
\
^
$
.
|
*
+
?
模式 | 含义 |
---|---|
() |
标记一个子表达式的开始和结束位置 |
[] |
表示一个匹配集合 |
{} |
标记限定符表达式的开始和结束位置 |
\ |
转义 |
. |
匹配除了换行符(\n)以外的任意字符 |
| | 逻辑或 |
常用
模式 | 含义 |
---|---|
\d |
匹配任何数字字符 |
\s |
匹配任何空白字符 |
\w |
匹配字母或数字或下划线或汉字 |
位置
模式 | 含义 |
---|---|
\b |
匹配一个单词边界 |
^ |
匹配字符串的开始 |
$ |
匹配字符串的结束 |
(?=exp) |
匹配exp前面的位置 |
(?<=exp) |
匹配exp后面的位置 |
(?!exp) |
匹配后面不是exp的位置 |
(?<!exp) |
匹配前面不是exp的位置 |
反义
模式 | 含义 |
---|---|
\D |
匹配任意非数字的字符 |
\S |
匹配任意不是空白符的字符 |
\W |
匹配任意不是字母,数字,下划线,汉字的字符 |
\B |
匹配不是单词开头或结束的位置 |
[^x] |
匹配除了x以外的任意字符 |
重复
模式 | 含义 |
---|---|
* |
重复零次或更多次 |
+ |
重复一次或更多次 |
? |
重复零次或一次 |
{n} |
重复n次 |
{n,} |
重复n次或更多次 |
{n,m} |
重复n到m次 |
以上重复为贪婪模式,懒惰模式需要在任意一个重复限制符后加上一个?
即:*?
+?
??
{n,}?
{n,m}?
验证
提示框
main.js
// iview提示框
import {Message} from 'iview';
Vue.prototype.$message = Message
通常判断会用if
和else if
进行多次判断,判断不能为空,判断不符合规则,然后给出相应的提示语
不能为空
if (!nullValue) {
this.$message({
type: 'info',
message: '值不能为空'
});
return
}
手机号
// 不严格一点或者想使用期限长一点验证11位和首字母为1就可以
// var regPhone = /^1\d{10}$/;
var regPhone = /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/;
if (!regPhone.test(phoneValue)) {
this.$message({
type: 'info',
message: '请输入正确的电话号码'
});
return
}
URL
// 网上写的都太复杂 ORZ
var regStr = '^(https|http)://';
var regUrl = new RegExp(regStr);
if (!regUrl.test(urlValue)) {
this.$message({
type: 'info',
message: '请以http://或https://开头'
});
return
}
年龄
let reg=/^(?:[1-9][0-9]?|1[01][0-9]|120)$/;//年龄是1-120之间有效
特殊字符
const validateName = (rule, value, callback) => {
if (!value) {
return callback(new Error('名称不能为空'))
} else if (/[:/\\?*[\]\,;:?,;|<>"]/.test(value)) {
return callback(new Error('不允许输入:/\\?*[],;|<>"特殊字符'))
}else {
callback()
}
}
小数点两位
const validatePrice = (rule, value, callback) => {
if (!value && value !== 0) {
return callback(new Error('总额不能为空'))
} else if (!/^((((?!0)\d+)|(0{1}))(.\d{1,2})?)$/.test(value)) {
return callback(new Error('请输入数字,小数后最多两位'))
} else {
callback()
}
}