簡體   English   中英

如何使用JavaScript正則表達式在單詞邊界之間找到用戶提供的字符串?

[英]How can I find a user-supplied string between word boundaries using JavaScript regular expressions?

我有一些正在使用JavaScript搜索的文本。 我讓用戶指定一個任意字符串,然后我要搜索該字符串,條件是將其視為“整個單詞”,即位於單詞邊界之間。

我只想說例如

var userString = "something blah";
// => "blah another thing blah"
"blah something blah blah".replace(new RegExp("\\b" + userString + "\\b"), "another thing"); 

// no match, good
"blahsomething blah blah".replace(new RegExp("\\b" + userString + "\\b"), "another thing");

userString = "something\\blah";

// want to match, but doesn't
"blah something\\blah blah".replace(new RegExp("\\b" + userString + "\\b"), "another thing");

如您所見,它分解為特殊字符-我需要一種方法來告訴RegExp逃避用戶輸入,或將表達式的一部分留給文字。 這在JavaScript中可行嗎?

userString.replace(/([\[\]*+.?{}()\\^$])/g, "\\$1")

您需要正確轉義反斜杠。 要在正則表達式中匹配單個反斜杠,您需要對其進行一次轉義以使其被接受為正則表達式中的實際反斜杠。 在將正則表達式存儲為字符串時,您需要再次轉義這兩個反斜杠中的每一個,從而導致\\\\\\\\ 因此,您可以簡單地在userString轉義斜線:

userString = userString.replace(/\\/g, '\\\\');

請注意,無論如何,您都應該清理用戶輸入,以使人們不會想出一些使您的應用程序混亂的奇怪的正則表達式。

暫無
暫無

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

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