题记:“笑来书里说,年轻人往往觉得时间还有很多,感觉不到时间总在一分一秒地过去;等他们醒悟,明白这一点,许多事情已经无能为力了。”
一.基本知识
正则表达式:Regular Expression,字符串操作的逻辑公式,定义规则字符串。用来匹配合法输入等操作。
常见字符表示:
\ | 转义字符 | * | 匹配{0, } | {n} | 匹配n次 |
^ | 开始 | + | 匹配{1, } | {n, } | 至少匹配n次 |
$ | 结束 | ? | 匹配{0, 1} | {n,m} | 最少匹配n次,做多匹配m次 |
| | 或 | \b | 单词边界 | \f | 换页 |
[xyz] | 字符集合 | \B | 非单词边界 | \n | 换行 |
[^xy] | 不包含字符 | \cx | Control-’x’ | \r | 回车 |
[a-z] | 字符范围 | \d | [0,9] | \s | 不可见字符[\f\n\r\t\v] |
[^a-z] | 不在范围 | \D | 非数字[^0-9] | \S | 可见字符 |
\v \t | 制表符 | \w | 包括下划线单词字符 | \W | 任何非单词字符 |
a.?跟在其他限制符(*,+,?,{n},{n,},{n,m})后,表示非贪婪,尽可能少的匹配;
b. 非匹配获取
二.常见正则表达式
1. Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$";
2. URL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$";
3. 整数或小数:”^[0-9]+([.][0-9]+)?$”;
4. IP地址: (1-255).(0-255).(0-255).(0-255)
"^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
+"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
+"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
+"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$"
三.其他
1. Qt RegExp
#include <QRegExpValidator>
{
QLineEdit *edit = new QLineEdit();
QRegExp regex("^ [1-9] (\\. \d {2}) | 10$");
QValidator *validator = new QRegExpValidator(regex, edit);
edit -> setValidator(validator);
}
2. Js RegExp()
a. 匹配格式是否正确
只允许输入:1-10之内整数/可包含小数,不限小数点后位数
var regExp = /^([1-9](\.\d*)? ||10)$/ig;
只允许输入:-90到90之间整数/可包含小数,不限小数点后位数
var regExp = /^((-)?((\d || [1-8]\d) (\.\d*)?) || 90)$/ig;
if (regExp.test($("#input_id").val()))
return true;
var patrn=/^ $/;
if (!patrn.exec(s))
return false;
b. Replace/操作匹配到的字符串
<script language="javascript">
var reg=new RegExp("终古","g"); //创建正则RegExp对象
var stringObj="终古人民共和国,终古人民";
var newstr=stringObj.replace(reg,"中国");
alert(newstr);
</script>
3. 正则表达式校验软件