簡體   English   中英

如果使用javascript中的regex,如果字符串不是較大字符串的一部分,則替換字符串

[英]Replace string if the string is not part of a larger string using regex in javascript

我正在嘗試編寫一個將textarea某些單詞大寫的函數,但是我遇到了麻煩,因為這些單詞可能是其他單詞的一部分,我只想在它們單獨站立時將它們大寫。

例如:我想大寫OR但僅當不使用befORe這樣的詞befORe 但是,這些單詞可以多種方式書寫,例如在一行的開頭,一個或多個whitespace字符之間,或諸如此類的東西:( (somethingsomething)OR(somethingelse) ,甚至可能更多,具體取決於其他人的方式寫下他們的查詢代碼。

我有使用regex的想法,但是我不夠熟練,無法找出編寫這些單詞的所有可能性。

我無法將textarea更改為其他更好的插件或編輯器,因為它已經是功能腳本的一部分。

任何有用的想法將不勝感激。

編輯:另外一個問題

我對我的問題有非常有幫助的答案,謝謝大家。 我還有一個額外的問題。 如果,然后再檢查它是否不是單詞的一部分,該怎么辦呢?我還想檢查它是否不在單詞的前面或后面. 期。 我嘗試在其開頭添加(?!\\.) ,但這根本不起作用。 有沒有辦法檢查呢?

//編輯:沒關系,我知道了。 它是\\ b(?!\\。)something(?!\\。)\\ b,用來檢查單詞的開頭和結尾。

在單詞邊界\\b上匹配可能適合:

'foo or bar'.replace(/\bor\b/, 'OR'); // foo OR bar

您還可以提供替換功能,因此:

'foo or bar'.replace(/\b(or)\b/, function(m){return m.toUpperCase()})); // foo OR bar

如果您有多個可能的匹配項,那么這可能會很好:

'foo or bar and fum'.replace(/\b(or|and)\b/ig, function(m){return m.toUpperCase()}); // foo OR bar AND fum

像這樣嗎 (°_•)

var txt="or some text or before (.)or(.) anywhere Or";

console.log(txt.replace(/\bor\b/gi,"OR"));     

// "OR some text OR before (.)OR(.) anywhere OR"

像這樣:

'(something)or(somethingelse) before or oR Or OR oreos thor'.replace([^\w]([oO][rR])[^\w], 'OR');

暫無
暫無

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

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