如何检查字符串是否包含javascript中的模板文字



我曾尝试使用函数str.includes('${'(作为一个简单的解决方案来检查这一点,但我没有收到正确的输出。我还取回了不包括它的字符串。

满足此条件的示例字符串是:"我的名字是${customer.name}">

您可能可以使用Regex来查找它。如果您只是想查看字符串中是否只有模板文字,则可以执行以下操作:

const str = 'My name is ${customer.Name} '
const regex = /${(.*?)}/g
const hasTemplateLiteral = (str) => str.search(regex) > -1
console.log(hasTemplateLiteral(str))

您可以在此处检查javascript正则表达式函数https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#using_regular_expressions_in_javascript./${(.*?)}/g将检查括号中有任何内容的${},如果找到索引,则返回索引,如果没有找到则返回-1。您可以在此处测试正则表达式https://regexr.com/

请注意,只有当模板文字实际上是像上面的例子一样的字符串格式时,这才会起作用。如果您的模板文字在backticks中,那么它实际上将包含变量。然后它就不起作用了,然后你必须检查字符串是否包括模板文本中的变量,如下所示:

const customer = {Name: 'bob'}
const str = `My name is ${customer.Name}`
const regex = /${(.*?)}/g
const hasIncludedVariable = (str, v) => str.includes(v)
console.log(hasIncludedVariable(str, customer.Name))

最新更新