JAVA和JS字串每4個字元新增空格
阿新 • • 發佈:2020-09-17
一.JS實現方法
'701f3orma43tN5umb6er044567'.replace(/\s/g, '').replace(/(\w{4})(?=\w)/g, '$1 ')
結果: 701f 3orm a43t N5um b6er 0445 67
詳細解釋
replace(/\s/g, '')
\s:匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。注意 Unicode 正則表示式會匹配全形空格符。 將空白字元調換為空字串
replace(/(\w{4})(?=\w)/g, '$1 ')
將字串前面符合條件的4個字元替換為4個字元和空格
$1的意思
示例
1、引用 $1...$9 ,是通過 RegExp 來的,而不是新建立的RegExp物件名;
2、你建立的正則物件,被括弧括起來的部分,從左到右,依次是$1...$9 ,
這說明,沒有括弧,你也甭想通過,RegExp.$1...$9,拿到任何東西;
下面例子是從javascript幫助文件摘抄的:
function matchDemo(){ var s; var re = new RegExp("d(b+)(d)","ig"); var str = "cdbBdbsbdbdz"; var arr = re.exec(str); s = "$1 contains: " + RegExp.$1 + "\n";//$1 contains: bB s += "$2 contains: " + RegExp.$2 + "\n";//$2 contains: d s += "$3 contains: " + RegExp.$3;//$3 contains: return(s); }
詳細解釋
var re = new RegExp("d(b+)(d)","ig");
var str = "cdbBdbsbdbdz";
var arr = re.exec(str);
在上面的正則的意思是匹配"db(一次或多次,忽略大小寫)d"的字串,匹配執行之後,匹配出來的資料是: c dbBd bsb dbd z中的dbBd和dbd$數字內容是從第一個匹配的字串中取出的,此時第一個匹配的字串為"dbBd"
$1對應的是第一個括弧中的(b+),大小寫忽略,所以是 bB
$2對應的是第二個括弧中的(d),d
$3沒有,空。
?=、?<=、?!、?<! 的使用區別
exp1(?=exp2):查詢 exp2 前面的 exp1。
(?<=exp2)exp1:查詢 exp2 後面的 exp1。
exp1(?!exp2):查詢後面不是 exp2 的 exp1。
(?<!exp2)exp1:查詢前面不是 exp2 的 exp1。
二.JAVA實現方法
"shjfhjskjfhjskdfhlskdfhls ".trim().replaceAll("(.{4})", "$1 ")
結果:shjf hjsk jfhj skdf hlsk dfhl s