數字轉千位符
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>
`))