如何使用javascript在字符串中找到确切的子字符串

时间:2017-01-16 06:14:17

标签: javascript regex string

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

我希望代码段仅在整个短语即" +1新测试"时返回true。在字符串str中找到。我试过regEx并匹配,搜索,测试选项。但是,没有一个对我有用。它显示' +'

的错误

以下是我正在使用的内容 -

    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 new test"时返回true subStr ="" +1 new te" (即在部分短语的情况下)。

6 个答案:

答案 0 :(得分:2)

您可以使用notify



includes




答案 1 :(得分:1)

ES6 中使用includes()功能,在 ES5

中使用indexOf()

includes - 如果true位于subStr,则会返回str

indexOf - 如果找不到匹配项,将返回-1,如果找到subStr,则会返回indexsubStr启动。

<强>实施例

&#13;
&#13;
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
&#13;
&#13;
&#13;

答案 2 :(得分:1)

+是一个RegEx令牌,意味着匹配前面一个或多个令牌。

你需要转义它以使RegEx引擎按字面意思对待它:

\+1 new test

虽然正如其他人所提到的,在这种情况下你应该看看字符串操作而不是RegEx。

答案 3 :(得分:0)

您不必在此使用//Wait for the frame to be available and switch to it WebDriverWait wait = new WebDriverWait(driver, 5); wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector(".demo-frame"))); WebElement Sourcelocator = driver.findElement(By.cssSelector(".ui-draggable")); WebElement Destinationlocator = driver.findElement(By.cssSelector(".ui-droppable")); builder.dragAndDrop(Sourcelocator,Destinationlocator).build().perform(); String actualText=driver.findElement(By.cssSelector("#droppable>p")).getText(); Assert.assertEquals(actualText, "Dropped!");

regex

如果找到子字符串,则返回true

答案 4 :(得分:0)

因为&#39; +&#39; sign是有效的正则表达式我们需要使用\#&#34; \ +&#34;来逃避它。这是工作示例。

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

答案 5 :(得分:0)

includes()方法确定字符串是否包含指定字符串的字符。 如果字符串包含字符,则此方法返回true,否则返回false。 注意:includes()方法区分大小写。

示例:

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

其中subStr等于true