In vielen F?llen müssen wir nur den Inhalt in der Mitte des Ausdrucks abgleichen, und es ist nicht erforderlich, dass der Inhalt an der übereinstimmenden Position, wie z. B. den linken und rechten Klammern im Bild unten, vorhanden ist. Ich kenne diese Nullbreite Behauptungen k?nnen durchgeführt werden, aber js unterstützt keine umgekehrten Behauptungen. Gibt es eine andere regul?re M?glichkeit, dies in einem Schritt zu tun? Es ist am besten, den nachfolgenden String-Abfang- und Verarbeitungsplan nicht zu ver?ffentlichen
用正則里的捕獲組沒錯,另外擴(kuò)充下你的思路:replace
方法可以結(jié)合捕獲組一起使用,逼格很高。
"transform: scale(-12312.212) rotate(-0.23deg) translateX(0.31px);"
.replace(/[^(]*\((-?\d+\.?\d+\w+?)\)[^(]*/g, function(m, p) {
return p+' ';
});
// "-12312.212 -0.23deg 0.31px "
更多js正則的系統(tǒng)知識,推薦深入閱讀 正則表達(dá)式前端使用手冊,這篇文章我斷斷續(xù)續(xù)寫了兩個月,如果沒有用你打我,保證不還手。
正則里的Group可以實(shí)現(xiàn)你的需求。
在寫你寫的正則基礎(chǔ)上,加上一對括號(表示一個Group,擴(kuò)住你真正想要的部分)即可. \((-?\d+\.?\d+([a-z]+)?)\)
測試代碼, 其中myRegexp.exec方法返回的是一個數(shù)組,第一個元素是正則匹配到的字符串,包括你“不希望看到”的括號。 第二個元素(即下標(biāo)為1)對應(yīng)你正則表達(dá)式中第一個括號捕獲的內(nèi)容,也就是你想要的數(shù)字及單位部分。
var myString = 'scale(-12312.212)skdk, rotate(-0.23deg)..+-(800)-555-2468';
var myRegexp = /\((-?\d+\.?\d+([a-z]+)?)\)/g;
match = myRegexp.exec(myString);
while (match != null) {
console.log(match[1])
match = myRegexp.exec(myString);
}
利用正則的分組就能搞定了
先用/g把目標(biāo)字符串都匹配出來
然后對每個使用不帶/g的正則取到結(jié)果中的1組,也就是你需要的值,直接上代碼吧
用括號括起來就是一個捕獲組,詳細(xì)用法自行g(shù)oogle