簡體   English   中英

匹配任何小寫/大寫鏈接字符並添加一個額外的字符

[英]Match any lowercase/uppercase chained character and add an additional one

在 Javascript,我想做以下事情。 當我匹配一個小寫字母后跟一個大寫字母時,我想在它之間添加一個特殊字符。

前任:

  • 我的房子 => 我的房子
  • aRandomString => a_Random_String

ETC...

我為這場比賽制作了一個正則表達式=>

/([az][AZ](.{0}))+/g

我的問題是如果我這樣做

"aRandomString".replace(/([az][AZ](.{0}))+/g, '_')

它當然會做=> _ando_tring

編輯:

我做了這個但是,這不是太復雜了嗎?

 var mString = "aRandomString"; var match = mString.match(/([az][AZ](.{0}))+/g, '_') var save = [...match] match = match.map(e => [e.slice(0, 1), '_', e.slice(1)].join('')) save.forEach((s,i) => mString = mString.replace(s, match[i])) console.log(mString)

是的。 您可以輕松地匹配您正在尋找的小寫、大寫模式,並用replacer替換。

 const mString = "aTestStringForMULTIPLEUpperCase"; const uString = mString.replace(/[az][AZ]/g, v => `${v[0]}_${v[1]}`); console.log(uString);

一個更健壯/通用的方法,它考慮了一個額外的大寫邊界(不僅是低,然后是上,還有另一個左側上和右側下之間的上)可能看起來像這樣......

 const regXUppecaseBoundaries = (/(?:(?<=[az])[AZ])|(?:(?<=[AZ])[AZ](?=[az]))/g); const sampleText = `myHouse aRandomString aRandomString aTestStringForMULTIPLEUpperCase myHouse AaAAaTestStringForMULTIPLEUpperCase`; // also check... [https://regex101.com/r/OpmSbx/1] console.log( sampleText.replace(regXUppecaseBoundaries, '_$&') );
 .as-console-wrapper { min-height: 100%;important: top; 0; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM