JavaScript正則表達式標準在執行搜索/替換時是否支持強制大小寫?JavaScript正則表達式 - 替換時強制使用
我通常意識到在正則表達式的替換部分中強制捕獲組大小寫等等選項。但我無法弄清楚如何在JavaScript正則表達式中做到這一點。 我無權訪問JavaScript代碼本身,但是我正在使用的程序允許輸入正則表達式字符串,並將它傳遞給正則表達式引擎本身。
JavaScript正則表達式標準在執行搜索/替換時是否支持強制大小寫?JavaScript正則表達式 - 替換時強制使用
我通常意識到在正則表達式的替換部分中強制捕獲組大小寫等等選項。但我無法弄清楚如何在JavaScript正則表達式中做到這一點。 我無權訪問JavaScript代碼本身,但是我正在使用的程序允許輸入正則表達式字符串,並將它傳遞給正則表達式引擎本身。
如果我理解正確,沒有。
您無法在正則表達式模式中評估JavaScript(將匹配轉換爲大寫)。
我只知道str.replace()轉換爲大寫。
JavaScript正則表達式默認情況下區分大小寫,如果傳遞/i
標誌,則支持不區分大小寫。
這將是事物的搜索方面,而不是在更換時更改捕獲組的情況。感謝您的回答。 – altendky 2009-12-10 06:30:45
字符串匹配是使用正則表達式完成的。字符串替換,但是,只關心您要替換的主題字符串的哪部分(它由正則表達式匹配提供),它只是基於你給它:現在
var subject = "This is a subject string";
// fails, case-sensitive match by default
subject.replace(/this/, "That");
// succeeds, case-insensitive expression using /i modifier, replaces the word "This" with the word "That"
subject.replace(/this/i, "That");
,如果你想捕捉匹配的字符串的一部分,並用它來改變的情況下,你可以做到這一點用也表達組(括號中的表達式):
var subject = "This is a subject string";
var matches = subject.match(/(subject) string/i);
if (matches.length > 0)
{
// matches[0] is the entire match, or "subject string"
// matches[1] is the first group match, or "subject"
subject.replace(matches[1], matches[1].toUpperCase());
// subject now reads "This is a SUBJECT string"
}
總之,如果您願意,可以進行匹配,以便處理大小寫敏感的問題。做替換就像告訴它用什麼直接字符串來替換一樣簡單。
我不認爲這是阿爾登斯基正在尋找的。但是有一個更好的方法來做你在這裏描述的內容。 String.replace的替換參數可以是用於修改每個匹配的函數。 //下面的示例增加了以T開頭的所有單詞(不區分大小寫) 「滴答滴答的時鐘被取下」.replace(/(T \ w *)/ gi,函數(匹配){return .toUpperCase ); }) – 2009-12-10 21:08:34
絕對挖掘anon函數作爲我的示例更平滑的方法。不知道爲什麼我描述的不是他要找的東西,但反正也沒有關係,因爲他已經標出了另一個答案。感謝您澄清更好的方式! – localshred 2009-12-11 06:13:31
您解釋瞭如何使用我說過我無法訪問的代碼進行操作。當然,我確實有訪問權限,但這不是我想解決的問題。我希望有一種方法可以讓用戶(我自己開始)輸入包含\ u(和類似)令牌的替換正則表達式來更改捕獲組的情況。 – altendky 2009-12-12 02:45:13
感謝您閱讀相對徹底的問題。請注意,其他一些正則表達式引擎可以在更換時更改捕獲組的情況。換句話說,我不是試圖在正則表達式中注入JavaScript。 – altendky 2009-12-10 06:52:44
不客氣。當你提到你時,我明白你的意思。我贏了嗎? :) – zen 2009-12-11 00:14:13