扩展Javascript字符串处理
做web前端开发,有时会发现原生js对字符串的处理方法很少(竟然不提供“替换所有”这类的方法),用起来不是很方便。
今天在网上找到了一些js 字符串处理的代码,记录下来,已备以后使用。
代码提供的方法有:
1.替换所有replaceAll()
2.反转:reverse()
3.移除左侧空格:ltrim()
4.移除右侧空格:rtrim()
5.移除前后空格:trim()
6.得到左起(10个)字符:lsubstr()
7.得到右起(10个)子符:rsubstr()
8.在字符串里查找另一字符串:位置从0开始(查找“i”):inStr()
9.在字符串里反向查找另一字符串:位置0开始(查找“i”):inStrRev()
10.计算字符串打印长度:lengthW()
11.是否是正确的IP地址(IPV4):isIPV4()
12.是否是正确的长日期:isLongDate()
13.是否是正确的短日期:isShortDate()
14.是否是正确的日期:isDate()
15.是否是手机(中国):isMobile()
16.是否是Email:isEmail()
17.是否是邮编(中国):isZipCode()
18.是否是有汉字:existChinese()
19.是否是合法的文件名/目录名:isFileName()
20.是否是有效链接:isUrl()
21.是否是有效的身份证 (中国):isIDCard()
22.是否是有效的电话号码(中国):isPhoneCall()
23.
是否是数字:isNumeric()
是否是正数:isNumeric('+')
是否是负数:isNumeric('-')
是否是整数:isNumeric('i')
是否是正整数:isNumeric('+i')
是否是负整数:isNumeric('-i')
是否是浮点数:isNumeric('f')
是否是正浮点数:isNumeric('+f')
是否是负浮点数:isNumeric('-f')
24.是否是颜色(#FFFFFF形式):isColor()
25.转换成全角:toCase()
26.对字符串进行Html编码:toHtmlEncode()
以下是源码
/*
* *****************************************
* 字符串函数扩充
* *****************************************
*/
/*
* ===========================================
* 替换所有
* ===========================================
*/
String.prototype.replaceAll = function(s1,s2) {
return this.replace(new RegExp(s1,"gm"),s2);
}
/*
* ===========================================
* 字符串反转
* ===========================================
*/
String.prototype.reverse = function() {
var retStr = "";
if (this&&this.length>0) {
for (var i = this.length - 1; i >= 0; i--) {
retStr += this.charAt(i);
}
}
return retStr;
}
/*
* ===========================================
* 去除左边的空格
* ===========================================
*/
String.prototype.ltrim = function() {
return this.replace(/(^\s*)/g, "");
}
/*
* ===========================================
* 去除右边的空格
* ===========================================
*/
String.prototype.rtrim = function() {
return this.replace(/(\s*$)/g, "");
}
/*
* ===========================================
* 去除前后空格
* ===========================================
*/
String.prototype.trim = function() {
return this.replace(/(^\s*)|(\s*$)/g, "");
}
/*
* ===========================================
* 得到左边的字符串
* ===========================================
*/
String.prototype.lsubstr = function(len) {
if (isNaN(len) || len == null) {
len = this.length;
} else {
if (parseInt(len) < 0 || parseInt(len) > this.length) {
len = this.length;
}
}
return this.substr(0, len);
}
/*
* ===========================================
* 得到右边的字符串
* ===========================================
*/
String.prototype.rsubstr = function(len) {
if (isNaN(len) || len == null) {
len = this.length;
} else {
if (parseInt(len) < 0 || parseInt(len) > this.length) {
len = this.length;
}
}
return this.substring(this.length - len, this.length);
}
/*
* ===========================================
* 在字符串里查找另一字符串:位置从0开始
* ===========================================
*/
String.prototype.inStr = function(str) {
if (str == null) {
str = "";
}
return this.indexOf(str);
}
/*
* ===========================================
* 在字符串里反向查找另一字符串:位置0开始
* ===========================================
*/
String.prototype.inStrRev = function(str) {
if (str == null) {
str = "";
}
return this.lastIndexOf(str);
}
/*
* ===========================================
* 计算字符串打印长度
* ===========================================
*/
String.prototype.lengthW = function() {
return this.replace(/[^\x00-\xff]/g, "**").length;
}
/*
* ===========================================
* 是否是正确的IP地址(IPV4)
* ===========================================
*/
String.prototype.isIPV4 = function() {
var reSpaceCheck = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
if (reSpaceCheck.test(this)) {
this.match(reSpaceCheck);
if (RegExp.$1 <= 255 && RegExp.$1 >= 0 && RegExp.$2 <= 255
&& RegExp.$2 >= 0 && RegExp.$3 <= 255 && RegExp.$3 >= 0
&& RegExp.$4 <= 255 && RegExp.$4 >= 0) {
return true;
} else {
return false;
}
} else {
return false;
}
}
/*
* ===========================================
* 是否是正确的长日期
* ===========================================
*/
String.prototype.isLongDate = function() {
var r = this
.replace(/(^\s*)|(\s*$)/g, "")
.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
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]);
}
/*
* ===========================================
* 是否是正确的短日期
* ===========================================
*/
String.prototype.isShortDate = function() {
var r = this.replace(/(^\s*)|(\s*$)/g, "")
.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]);
}
/*
* ===========================================
* 是否是正确的日期
* ===========================================
*/
String.prototype.isDate = function() {
return this.isLongDate() || this.isShortDate();
}
/*
* ===========================================
* 是否是手机(中国)
* ===========================================
*/
String.prototype.isMobile = function() {
return /^0{0,1}[13,15,18][0-9]{9}$/.test(this);
}
/*
* ===========================================
* 是否是Email
* ===========================================
*/
String.prototype.isEmail = function() {
return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/
.test(this);
}
/*
* ===========================================
* 是否是邮编(中国)
* ===========================================
*/
String.prototype.isZipCode = function() {
return /^[\\d]{6}$/.test(this);
}
/*
* ===========================================
* 是否是有汉字
* ===========================================
*/
String.prototype.existChinese = function() {
// [\u4E00-\u9FA5]為漢字﹐[\uFE30-\uFFA0]為全角符號
//return /^[\x00-\xff]*$/.test(this);
return /^[\u4E00-\u9FA5]*$/.test(this);
}
/*
* ===========================================
* 是否是合法的文件名/目录名
* ===========================================
*/
String.prototype.isFileName = function() {
return !/[\\\/\*\?\|:"<>]/g.test(this);
}
/*
* ===========================================
* 是否是有效链接
* ===========================================
*/
String.prototype.isUrl = function() {
return /^http[s]?:\/\/([\w-]+\.)+[\w-]+([\w-./?%&=]*)?$/i.test(this);
}
/*
* ===========================================
* 是否是有效的身份证 (中国)
* ===========================================
*/
String.prototype.isIDCard = function() {
var iSum = 0;
var info = "";
var sId = this;
var aCity = {
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 : "国外"
};
if (!/^\d{17}(\d|x)$/i.test(sId)) {
return false;
}
sId = sId.replace(/x$/i, "a");
// 非法地区
if (aCity[parseInt(sId.substr(0, 2))] == null) {
return false;
}
var sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-"
+ Number(sId.substr(12, 2));
var d = new Date(sBirthday.replace(/-/g, "/"))
// 非法生日
if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d
.getDate())) {
return false;
}
for (var i = 17; i >= 0; i--) {
iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);
}
if (iSum % 11 != 1) {
return false;
}
return true;
}
/*
* ===========================================
* 是否是有效的电话号码(中国)
* ===========================================
*/
String.prototype.isPhoneCall = function() {
return /(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
.test(this);
}
/*
* ===========================================
* 是否是数字
* ===========================================
*/
String.prototype.isNumeric = function(flag) {
// 验证是否是数字
if (isNaN(this)) {
return false;
}
switch (flag) {
case null : // 数字
case "" :
return true;
case "+" : // 正数
return /(^\+?|^\d?)\d*\.?\d+$/.test(this);
case "-" : // 负数
return /^-\d*\.?\d+$/.test(this);
case "i" : // 整数
return /(^-?|^\+?|\d)\d+$/.test(this);
case "+i" : // 正整数
return /(^\d+$)|(^\+?\d+$)/.test(this);
case "-i" : // 负整数
return /^[-]\d+$/.test(this);
case "f" : // 浮点数
return /(^-?|^\+?|^\d?)\d*\.\d+$/.test(this);
case "+f" : // 正浮点数
return /(^\+?|^\d?)\d*\.\d+$/.test(this);
case "-f" : // 负浮点数
return /^[-]\d*\.\d$/.test(this);
default : // 缺省
return true;
}
}
/*
* ===========================================
* 是否是颜色(#FFFFFF形式)
* ===========================================
*/
String.prototype.isColor = function() {
var temp = this;
if (temp == "")
return true;
if (temp.length != 7)
return false;
return (temp.search(/\#[a-fA-F0-9]{6}/) != -1);
}
/*
* ===========================================
* 转换成全角
* ===========================================
*/
String.prototype.toCase = function() {
var tmp = "";
for (var i = 0; i < this.length; i++) {
if (this.charCodeAt(i) > 0 && this.charCodeAt(i) < 255) {
tmp += String.fromCharCode(this.charCodeAt(i) + 65248);
} else {
tmp += String.fromCharCode(this.charCodeAt(i));
}
}
return tmp
}
/*
* ===========================================
* 对字符串进行Html编码
* ===========================================
*/
String.prototype.toHtmlEncode = function() {
var str = this;
str = str.replace(/&/g, "&");
str = str.replace(/</g, "<");
str = str.replace(/>/g, ">");
str = str.replace(/\'/g, "'");
str = str.replace(/\"/g, """);
str = str.replace(/\n/g, "<br>");
str = str.replace(/\ /g, " ");
str = str.replace(/\t/g, " ");
return str;
}
* 附件是源码及演示demo
* 源码来源于网络,如有侵权,敬请告知。
本文分享了JavaScript中对字符串处理的扩展方法,包括替换、反转、移除空格、截取字符串、查找字符串、计算长度等常用操作,以及针对特定格式验证的功能如IP地址、日期、手机号、邮箱等,提供了丰富的实战代码示例。
955

被折叠的 条评论
为什么被折叠?



