去除左侧空格
function LTrim(str) {
return str.replace(/^\s*/g,"");
}
去除右侧空格
function RTrim(str) {
return str.replace(/\s*$/g,"");
}
去掉字符串两端的空格
function trim(str) {
return str.replace(/(^\s*)|(\s*$)/g, "");
}
去除字符串中间空格
function CTim(str) {
return str.replace(/\s/g,'');
}
是否为由数字组成的字符串
function is_digitals(str) {
var reg=/^[0-9]*$/;//匹配整数 return reg.test(str);
}
验证是否为整数,包括正负数
function Is_Int(str) {
var reg=/^(-|\+)?\d+$/; return reg.test(str);
}
大于0的整数
function Is_positive_num(str) {
var reg=/^\d+$/; return reg.test(str);
}
验证负整数
function Is_minus(str) {
var reg=/^-\d+$/; return reg.test(str);
}
验证是否为浮点数(正数)
function IsPositiveFloat(str) {
var check_float =new RegExp("^[1-9][0-9]*\.[0-9]+$");
//匹配浮点数
return check_float.exec(str);
}
是否为固定电话
区号3到4位,号码7到8位,区号和号码用"-"分割开,转接号码为1到6位,用小括号括起来紧跟在号码后面
function IsTelphone(str) {
var reg = /^[0-9]{3,4}\-\d{7,8}(\d1,6)?$/;
if (reg.test(str)) return true;
else return false;
}
验证是否为手机号码
function checkMobile(){
var sMobile = document.mobileform.mobile.value
if(!(/^1[3|5][0-9]\d{4,8}$/.test(sMobile))){
alert("不是完整的11位手机号或者正确的手机号前七位");
document.mobileform.mobile.focus();
return false;
}
}
验证是否为中文
function IsChinese(str) {
var reg = /^[\u0391-\uFFE5]+$/;
return reg.test(str);
}
验证是否为qq号码
长度为5-10位
function IsQq(str) {
var reg = /^[1-9]\d{4,9}$/;
return reg.test(str);
}
验证邮编
function IsPostId(str) {
var reg = /^\d{6}$/;
return reg.test(str);
}
验证邮箱
function IsEmail(str) {
var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
return reg.test(str);
}
验证IP地址
function IsIp(str) {
var check = function(v) {
try {
return (v <= 255 && v >= 0)
} catch(x) {
return false;
}
}
var re = str.split(".")
return (re.length == 4) ? (check(re[0]) && check(re[1]) &&check(re[2]) && check(re[3])) : false
}
身份证验证
function IsIdnum(str) {
var City = {11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",
31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",
43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",
61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "}
var iSum = 0
var info = ""
if (!/^\d{17}(\d|x)$/i.test(str))
return false;
str = str.replace(/x$/i,"a");
if (City[parseInt(str.substr(0,2))]==null) {
alert( "Error:非法地区");
return false;
}
sBirthday = str.substr(6,4) + "-" + Number(str.substr(10,2)) + "-" + Number(str.substr(12,2));
var d = new Date(sBirthday.replace(/-/g,"/"))
if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) {
alert("Error:非法生日");
return false;
}
for (var i = 17;i>=0;i --)
iSum += (Math.pow(2,i) % 11) * parseInt(str.charAt(17 - i),11)
if (iSum%11 != 1) {
alert("Error:非法证号");
return false;
}
return City[parseInt(str.substr(0,2))] + "," + sBirthday + "," + (str.substr(16,1)%2?"男":"女")
}
判断是否短时间(如13:04:06)
function IsTime(str) {
var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
if (a == null) {
alert('输入的参数不是时间格式');
return false;
}
if (a[1]>24 || a[3]>60 || a[4]>60) {
alert("时间格式不对");
return false
}
return true;
}
判断是否短日期(如2020-07-24)
function IsDate(str) {
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r == null)
return false;
var d= new Date(r[1], r[3]-1, r[4]);
return(d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3]&&d.getDate() == r[4]);
}
判断是否长时间(如2020-07-24 13:04:06)
function IsDateTime(str){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})(\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = str.match(reg);
if(r == null)
return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear() == r[1]&&(d.getMonth() + 1) == r[3]&&d.getDate() == r[4]&&d.getHours() == r[5]&&d.getMinutes() == r[6]&&d.getSeconds() == r[7]);
}
是否全部由a-Z或者是A-Z的字母组成
function Is_Letters(str) {
var reg = /[^a-zA-Z]/g;
return reg.test(str);
}
是否由字母和数字组成
function Is_letter_num(str) {
var reg = /[^0-9a-zA-Z]/g;
return reg.test(str);
}
是否由字母和数字,下划线,点号组成,且开头的只能是下划线和字母
function IsUserName(str) {
var reg = /^([a-zA-z_]{1})([\w]*)$/g;
return reg.test(str);
}
判断浏览器的类型
function GetBrowseType() {
alert(window.navigator.appName);
}
判断ie的版本
function Get_Eidition(){
alert(window.navigator.appVersion);
}
判断客户端的分辨率
function GetResolution() {
alert(window.screen.height);
alert(window.screen.width);
}
判断用户名是否为数字字母下滑线
function notchinese(str) {
var reg=/[^A-Za-z0-9_]/g
if (reg.test(str)) {
return (false);
} else {
return(true);
}
}
验证url
function IsUrl(str) {
var reg = /^(http\:\/\/)?([a-z0-9][a-z0-9\-]+\.)?[a-z0-9][a-z0-9\-]+[a-z0-9](\.[a-z]{2,4})+(\/[a-z0-9\.\,\-\_\%\?\=\&]?)?$/i;
return reg.test(str);
}
判断是否含有汉字
function ContentWord(str) {
if (escape(str).indexOf("%u") != -1) return true;
else return false;
}
下面是正则表达式中的一些常用模式。
/pattern/ | 结果 |
. | 匹配除换行符以外的所有字符 |
x? | 匹配 0 次或一次 x 字符串 |
x* | 匹配 0 次或多次 x 字符串,但匹配可能的最少次数 |
x+ | 匹配 1 次或多次 x 字符串,但匹配可能的最少次数 |
.* | 匹配 0 次或一次的任何字符 |
.+ | 匹配 1 次或多次的任何字符 |
{m} | 匹配刚好是 m 个 的指定字符串 |
{m,n} | 匹配在 m个 以上 n个 以下 的指定字符串 |
{m,} | 匹配 m个 以上 的指定字符串 |
[] | 匹配符合 [] 内的字符 |
[^] | 匹配不符合 [] 内的字符 |
[0-9] | 匹配所有数字字符 |
[a-z] | 匹配所有小写字母字符 |
[^0-9] | 匹配所有非数字字符 |
[^a-z] | 匹配所有非小写字母字符 |
^ | 匹配字符开头的字符 |
$ | 匹配字符结尾的字符 |
\d | 匹配一个数字的字符,和 [0-9] 语法一样 |
\d+ | 匹配多个数字字符串,和 [0-9]+ 语法一样 |
\D | 非数字,其他同 \d |
\D+ | 非数字,其他同 \d+ |
\w | 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样 |
\w+ | 和 [a-zA-Z0-9]+ 语法一样 |
\W | 非英文字母或数字的字符串,和 [^a-zA-Z0-9] 语法一样 |
\W+ | 和 [^a-zA-Z0-9]+ 语法一样 |
\s | 空格,和 [\n\t\r\f] 语法一样 |
\s+ | 和 [\n\t\r\f]+ 一样 |
\S | 非空格,和 [^\n\t\r\f] 语法一样 |
\S+ | 和 [^\n\t\r\f]+ 语法一样 |
\b | 匹配以英文字母,数字为边界的字符串 |
\B | 匹配不以英文字母,数值为边界的字符串 |
a|b|c | 匹配符合a字符 或是b字符 或是c字符 的字符串 |
abc | 匹配含有 abc 的字符串 |
(pattern) | () 这个符号会记住所找寻到的字符串,是一个很实用的语法。第一个 () 内所找到的字符串变成 $1 这个变量或是 \1 变量,第二个 () 内所找到的字符串变成 $2 这个变量或是 \2 变量,以此类推下去。 |
/pattern/i | i 这个参数表示忽略英文大小写,也就是在匹配字符串的时候,不考虑英文的大小写问题。 |
\ | 如果要在 pattern 模式中找寻一个特殊字符,如 "*",则要在这个字符前加上 \ 符号,这样才会让特殊字符失效 |
|
下面给出一些例子:
范例 | 说明 |
/perl/ | 找到含有 perl 的字符串 |
/^perl/ | 找到开头是 perl 的字符串 |
/perl$/ | 找到结尾是 perl 的字符串 |
/c|g|i/ | 找到含有 c 或 g 或 i 的字符串 |
/cg{2,4}i/ | 找到 c 后面跟着 2个到 4个 g ,再跟着 i 的字符串 |
/cg{2,}i/ | 找到 c 后面跟着 2个以上 g ,再跟着 i 的字符串 |
/cg{2}i/ | 找到 c 后面跟着 2个 g,再跟着 i 的字符串 |
/cg*i/ | 找到 c 后面跟着 0个或多个 g ,再跟着 i 的字符串,如同/cg{0,1}i/ |
/cg+i/ | 找到 c 后面跟着一个以上 g,再跟着 i 的字符串,如同/cg{1,}i/ |
/cg?i/ | 找到 c 后面跟着 0个或是 1个 g ,再跟着 i 的字符串,如同/cg{0,1}i/ |
/c.i/ | 找到 c 后面跟着一个任意字符,再跟着 i 的字符串 |
/c..i/ | 找到 c 后面跟着二个任意字符,再跟着 i 的字符串 |
/[cgi]/ | 找到符合有这三个字符任意一个的字符串 |
/[^cgi]/ | 找到没有这三个字符中任意一个的字符串 |
/\d/ | 找寻符合数字的字符,可以使用/\d+/来表示一个或是多个数字组成的字符串 |
/\D/ | 找寻符合不是数字的字符,可以使用/\D+/来表示一个或是更多个非数字组成的字符串 |
/\*/ | 找寻符合 * 这个字符,因为 * 在常规表达式中有它的特殊意思,所以要在这个特殊符号前加上 \ 符号,这样才会让这个特殊字符失效 |
/abc/i | 找寻符合 abc 的字符串而且不考虑这些字符串的大小写 |
匹配中文字符的正则表达式: [u4e00-u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空白行的正则表达式:ns*r
评注:可以用来删除空白行
匹配HTML标记的正则表达式:< (S*?)[^>]*>.*?|< .*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^s*|s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]d{5}(?!d)
评注:中国邮政编码为6位数字
匹配身份证:d{15}|d{18}
评注:中国的身份证为15位或18位
匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有用
匹配特定数字:
^[1-9]d*$ //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$ //匹配整数
^[1-9]d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数 + 0)
^(0|[1-9]/d*)(/./d*)?$ //匹配正实数
匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^w+$ //匹配由数字、26个英文字母或者下划线组成的字符串