2017-01-16 77 views
0
var str = "Hello World +1 new test Good Morning"; 
var subStr = "+1 new test"; 

我希望代碼片段僅在字符串str中找到整個短語(即「+1 new test」)時才返回true。我已經嘗試過regEx和匹配,搜索,測試選項。但是,沒有人爲我工作。它顯示錯誤的'+'。如何使用javascript在字符串中查找確切的子字符串

下面是我使用的是什麼 -

var HVal = "Hello World +1 Good" 
    var HValNew = HVal.toString().toUpperCase(); 
    var probStr = "Hello World"; 
    var test = probStr.toUpperCase(); 
    var re = new RegExp('\\b'+test+'\\b'); 
    re.test(HValNew); 

這工作時probStr是包含字母數字字符的字符串,但是當它有特殊字符如失敗「+」,「?」

我發現我的答案詞組匹配

 var str = "Hello World +1 new test Good Morning".toString().toUpperCase(); 
     var subStr = "+1 new test".toString().toUpperCase(); 
     escapeSpecialChars = function(string) {return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, 'x')}; 
     var probStr = escapeSpecialChars(subStr); 
     var strNew = escapeSpecialChars(str); 
     var re = new RegExp("\\b"+probStr+"\\b"); 
     re.test(strNew); 

這回真的當SUBSTR =「+1新的測試」和假當SUBSTR =「」 + 1新TE」(即在部分短語的情況下, )

+1

'str.indexOf(SUBSTR)> -1' – Satpal

+0

'+'在正則表達式有特殊的意義,你需要逃避使用' \ +' – Viney

+0

我只是建議瀏覽一下['String']的文檔(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String),並且學習這些方法,這將幫助你解決這個問題,以及將來會遇到的更多問題。 – 2017-01-16 06:26:21

回答

1

使用includes()功能ES6,並indexOf()ES5

includes - 將返回true如果subStrstr

indexOf - 將返回-1如果沒有找到匹配,並且如果subStr被發現,將返回index,從哪裏開始subStr

例子

var str = "Hello World +1 new test Good Morning"; 
 
var subStr = "+1 new test"; 
 

 
console.log(str.includes(subStr)); // ES6 
 

 
console.log(str.indexOf(subStr) !== -1); // ES5

+0

@Rajesh當然是的 –

+0

這不是一個重複的問題@Rajesh。我的問題是匹配確切的短語。 indexOf,contains,search等沒有回答我的問題 – aks

+0

@aks **字符串中的確切子字符串**這是什麼意思呢?另外代碼共享也指向它。如果您認爲它不重複,請分享正確的案件和不正確的案件。這將澄清你的要求。 – Rajesh

0

你不必在這裏使用regex

str.indexOf(subStr) >=0 

如果子發現

+0

這似乎是一個非常基本的問題。你不應該把它標記爲重複嗎? – Rajesh

+0

@Rajesh,是的,你是對的 –

+0

var str =「Hello World」; var subStr =「Hell」; 然後,str.indexOf(subStr)返回0; if var subStr =「Hello」;那麼太str.indexOf(subStr)返回0. – aks

2

這將返回true,您可以使用includes

var str = "Hello World +1 new test Good Morning"; 
 
var subStr = "+1 new test"; 
 

 
console.log(str.includes(subStr));  // ECMAScript 6 
 

 
console.log(str.includes("anything")); // ECMAScript 6

+1

這似乎是一個非常基本的問題。你不應該把它標記爲重複嗎? – Rajesh

+0

@Rajesh肯定:) –

1

+是一個正則表達式令牌,這意味着匹配前面的一個或多個令牌。

你需要逃避它使正則表達式引擎把它從字面上:

\+1 new test 

雖然如其他人所說的,你應該看看字符串操作,而不是正則表達式在這種情況下。

+0

這似乎是一個非常基本的問題。你不應該把它標記爲重複嗎? – Rajesh

+0

謝謝heemayl。 – aks

0

由於'+'符號是有效的正則表達式,因此我們需要使用\「\」來將其轉義。這是一個工作示例。

var str = "Hello World +1 new test Good Morning"; 
 
var subStr = "\+1 new test" 
 
var bol = str.indexOf(subStr) > -1; 
 
console.log(bol);

+0

請添加說明。僅僅放置工作代碼是不夠的。 – Rajesh

0

的包括()方法確定的字符串是否包含指定字符串的字符。 如果字符串包含字符,則此方法返回true,否則返回false。 注意:includes()方法區分大小寫。

例子:

var str = "Hello +1 world, welcome to the universe."; 
var subStr = str.includes("+1 world"); 

哪裏SUBSTR等於真正

相關問題