如何检查一个字符串是否在另一个字符串内(但不在边缘)?

时间:2019-11-06 09:18:11

标签: javascript regex

假设我有以下字符串:abc/def。如何检查字符串内部是否有斜线但边缘没有斜线?例如,不允许在末尾使用abcdef/之类的斜杠或在该情况下使用/abcdef之类的开头。

在这种情况下,String#includes不起作用,因为它包括所有可能的位置。我该如何实现?

3 个答案:

答案 0 :(得分:1)

您可以使用一个子字符串并检查包含。

const check = s => s.slice(1, -1).includes('/');

console.log(['abc/def', '/def', 'abc/'].map(check));

答案 1 :(得分:0)

您可以使用简单的正则表达式来检查字符串:

"abc/def".test(/.\/./) // true
"/abcdef".test(/.\/./) // false
"abcdef/".test(/.\/./) // false

或者,您可以获取/的索引并将其与字符串的长度进行比较。

const str = "abc/def"

const i = str.indexOf("/")
i > 0 && i < str.length - 1 // true

您也可以使用inside-string

const insideString = require("inside-string")
insideString("abc/def", "/") // true

答案 2 :(得分:0)

您可以使用正则表达式:

function test(input, search) {
  return new RegExp(`^.+${search}.+$`).test(input);
}

console.log(test("abcde/f", "\/"));
console.log(test("abcdef/", "\/"));