我想在“測驗”之前插入一些東西,我使用這個正則運算式并期望它會回傳換行符但它回傳“h”所以如果我用替換方法插入我實際上不會像我想要的那樣在“測驗”之前插入:在哪里錯誤?
https://jsfiddle.net/y4qh629a/
const test = `
blah blah
test blah blah`;
const regex = /[^"]\s*(?=test)/;
const match = test.match(regex);
alert(match)
uj5u.com熱心網友回復:
否定字符類 [^"] 使用除"char之外的單個字符,在本例中為hchar。
如果你想在匹配之前添加一些東西,你可以使用替換或者連接匹配回傳的值(注意匹配回傳一個陣列,并且const test不能被覆寫)
在這種情況下,您可以使用捕獲完整匹配。在替換中使用完全匹配使用$&.
請注意,除了"存在之外,至少應該有一個字符,它也可以是一個空白字符。
const test = `
blah blah
test blah blah`;
console.log(test.replace(/[^"]\s*(?=test)/, "$&[replacement]"));
如果您還想test在字串的開頭進行匹配:
const test = `test here
blah blah
test blah blah`;
console.log(test.replace(/(?:^|[^"])\s*(?=test)/g, "$&[replacement]"));
uj5u.com熱心網友回復:
改用負面回顧:
(?!<=")\s*(?=test)
const test = `
blah blah
test blah blah`;
const regex = /(?!<=")\s*(?=test)/;
const match = test.match(regex);
console.log(match)
uj5u.com熱心網友回復:
[^"] 匹配單個字符。
也許你想無限次匹配?只需添加 ae[^"]
const regex = /[^"] \s*(?=test)/;
Fiddle
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/342414.html
標籤:javascript 正则表达式
下一篇:查找以[[和特定字串開頭的字串
