语法
java正则
//第一种matches:测试ok
String regex = "Hello.*?(\\d+).*Demo";
boolean flag = str.matches(regex);
//第二种 pattern:
//第三种 test
formatt.test(value)
符号汇总
//定位符
^ 匹配输入字符串开始的位置。
$ 匹配输入字符串结尾的位置
\b 匹配一个单词边界,即字与空格间的位置。
\B 非单词边界匹配
//限定符
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 >=0
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 >=1
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" <=1
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o =n
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 >=n
{n,m} 最少匹配 n 次且最多匹配 m 次 >=n and <=m
//特别字符
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符
. 匹配除换行符 \n 之外的任何单字符。
{ 标记限定符表达式的开始。
[ 标记一个中括号表达式的开始
| 指明两项之间的一个选择。
//预定义字符
\d 数字: [0-9]
\D 非数字: [^0-9]
\s 空白字符: [ \t\n\x0B\f\r]
\S 非空白字符: [^\s]
\w 单词字符: [a-zA-Z_0-9]
\W 非单词字符: [^\w] \w代表字母数字和下划线 \W 并不包含下划线
// 例如:必须包含大写字母,小写字母,数字,以及符号(包含下划线)
str="^(?![A-Za-z0-9]+$)(?![a-z0-9_\\W]+$)(?![A-Za-z_\\W]+$)(?![A-Z0-9_\\W]+$)(?![A-Z0-9\\W]+$)[\\w\\W]{8,}$";
// 表达式的含义就是指 在满足 [\\w\\W]{8,} 的情况下(可以匹配到字母数字下划线符号)的情况下
// 排除 (?![A-Za-z0-9]+$) 只有字母数字的情况
// 排除 (?![a-z0-9_\\W]+$) 没有大写字母的情况
// 排除 (?![A-Za-z_\\W]+$) 没有数字的情况
// 排除 (?![A-Z0-9_\\W]+$) 没有小写字母的情况
案例
//金额
不是金额格式变成空
onkeyup="this.value=this.value.toString().match(/^\d+(?:\.\d{0,2})?/)"
function checkFund(value) {
var exp = /^([1-9][\d]{0,7}|0)(\.[\d]{1,2})?$/;
if(!exp.test(value)) {
$.modal.alertWarning("请输入金额格式");
return;
}
}
//整数
正整数: /[1-9][0-9]*/ //[1-9]设置第一个数字不是 0,[0-9]* 表示任意多个数字
整数的正则表达式(包括0,小数保留两位):^((0{1}\.\d{1,2})|([1-9]\d*\.{1}\d{1,2})|([1-9]+\d*)|0)$
正数的正则表达式(不包括0,小数保留两位):^((0{1}\.\d{1,2})|([1-9]\d*\.{1}\d{1,2})|([1-9]+\d*))$
正整数的正则表达式(包括0):^[+]{0,1}(\d+)$
正整数的正则表达式(不包括0):^[1-9]\d*$
折扣(0-1)的小数的正则表达式(包括1):^(0\.\d+|1)$
折扣(0-1)的小数的正则表达式(不包括1):^(0\.\d+)$
//数字
//判断是不是一个数字 或者 一个字符串里全是数字
function isNumber (value) {
if (value === undefined || value === null || value === '') {
return false
}
if (typeof(value) === 'string') {
//正整数
var reNumber = /^\d+$/
//负整数
var reNeNumber = /^-\d+$/
//正实数
var reRealNumber1 = /^[1-9]\d*[.]\d+$/ //非零开头
var reRealNumber2 = /^0[.]\d+$/ //零开头
//负实数
var reNeRealNumber1 = /^-[1-9]\d*[.]\d+$/ //非零开头
var reNeRealNumber2 = /^-0[.]\d+$/ //零开头
if (reNumber.test(value) || reNeNumber.test(value)
|| reRealNumber1.test(value) || reRealNumber2.test(value)
|| reNeRealNumber1.test(value)|| reNeRealNumber2.test(value)) {
return true
} else {
return false
}
}else if (typeof(value) === 'number') {
return true
}else {
return false
}
}
失去焦点时校验
//失去焦点时校验
function checkMoney(){
var money = $("#returns_money").val();
var exp = /^([1-9][\d]{0,7}|0)(\.[\d]{1,2})?$/;
if(exp.test(money)){
$("#money_check_result").html("");
}else{
$("#money_check_result").html("<i></i><label >请填写正确的金额</label>");
}
}