数字转千位符
const reg= function(numStr){
return numStr.toString().replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g,'$&,')
//stringObject.replace(regexp/substr,replacement)参数 描述
/* replacement====>
$1、$2、...、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$& 与 regexp 相匹配的子串。
$` 位于匹配子串左侧的文本。
$' 位于匹配子串右侧的文本。
$$ 直接量符号。*/
}
单词首字母大写
var str = "my name is niu ,i am 28 years old";
var newStr = str.replace(/\b[a-z]/g, function (a) { //arguments[0]=a
console.log(a);
return a.toUpperCase()
})
console.log(newStr); //My Name Is Niu ,I Am 28 Years Old
邮箱验证
验证中文名
身份证验证
/*身份证
18位
前6位是省市
中间8位是生日
倒数四位
前两位是公安局代码
第三位是性别,奇数是男,偶数是女
最后一位是数字,有可能是X */
let reg3 = /^(\d{6})([1-2]\d{3})((0[1-9])|(1[0-2]))((0[1-9])|([1-2]\d)|(3[0-1]))\d{2}(\d)(\d|X)$/;
获取url里的参数-
let url = 'http://www.baidu.com?name=erYa&age=18#index';
function queryUrlParams() {
let reg = /([^?=&#]+)=([^?=&#]+)/g;
let obj = {}; // 创建一个空对象,用来存储一会处理的键值对
this.replace(reg, (content, key, value) => {
// content是每一次全局捕获的内容,
// key是每一次第一个分组捕获的内容(作为属性名)
// value是每一次第二个分组捕获的内容(作为属性值)
obj[key] = value;
});
// 把url里的参数捕获出来,以键值对的形式赋值给obj对象
this.replace(/#([^?=&#]+)/, (content, value) => {
// value是每一次分组捕获的内容(作为属性值)
obj['hash'] = value;
})
// 把url里的hash值捕获出来,以键值对的格式赋值给obj对象
return obj;
// 最后把obj对象return 出去
}
String.prototype.queryUrlParams = queryUrlParams;
console.log(url.queryUrlParams()); /*{age: "18",hash: "index",name: "erYa"}*/
let url = 'http://www.baidu.com?name=erYa&age=18#index';
function getUrlParameter(name){
let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
let r = window.location.search.substr(1).match(reg);
if(r != null) return decodeURIComponent(r[2]);
return null;
}
getUrlParameter('name') //erYa
手机号格式化( 3-4-4分割)
const reg= function(numStr){
return numStr.toString().replace(/(?<=\d{3})\d+/, ($0) =>{
return '-' + $0;
console.log($0)//$0 ==>3456789
}) .replace(/(?<=[\d-]{8})\d{1,4}/, ($0) => '-' + $0)
//释:(?<=(href=")) 表示 匹配以(href=" target="_blank" rel="external nofollow" )开头的字符串,并且捕获(存储)到分组中
//先把电话号变为123-45678900在以前八位为数字和-开头 在吧结尾替换为 -8900;
}
密码验证
- 密码长度是6-12位,由数字、小写字母和大写字母组成,但必须至少包括2种字符
let a = function (numStr) {
let aa = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$/
return aa.test(numStr)
};
去除字符串中空格
function trim (str){
return str.replace(/\s/g, '')
}
// 去除收尾空格
const trim = (str) => {
return str.replace(/^\s*|\s*$/g, '')
}
html转义
- 防止XSS攻击的方式之一就是做HTML转义,转义规则如下,要求将对应字符转换成等值的实体。而反转义则是将转义后的实体转换为对应的字符
- xss攻击:有的时候页面中会有一个输入框,用户输入内容后会显示在页面中,类似于网页聊天应用。如果用户输入了一段js脚本,比例 “”,引号里其实有段代码但是csdn转义了显示不出,正常页面会弹出一个对话框,或者输入的脚本中有改变页面js变量的代码则会时程序异常或者达到跳过某种验证的目的
const escape = (string) => {
const escapeMaps = {
'&': 'amp',
'<': 'lt',
'>': 'gt',
'"': 'quot',
"'": '#39'
}
// 这里和/[&<>"']/g的效果是一样的
const escapeRegexp = new RegExp(`[${Object.keys(escapeMaps).join('')}]`, 'g')
return string.replace(escapeRegexp, (match) => `&${escapeMaps[match]};`)
}
console.log(escape(`
<div>
<p>hello world</p>
</div>
`))
html反转义
const unescape = (string) => {
const unescapeMaps = {
'amp': '&',
'lt': '<',
'gt': '>',
'quot': '"',
'#39': "'"
}
const unescapeRegexp = /&([^;]+);/g
return string.replace(unescapeRegexp, (match, unescapeKey) => {
return unescapeMaps[ unescapeKey ] || match
})
}
console.log(unescape(`
<div>
<p>hello world</p>
</div>
`))