-1

我正在尝试编写一个正则表达式,如果给定的字符串 foo 以给定的字符串 bar 结尾,它应该返回 true。例如:

function solution(str, ending)
{
  var pattern = "/" + ending + "$/";
  var regex = new RegExp(pattern, "i");
  console.log( str + ", " + ending + " , " + regex.source);
  return regex.test(str);
}

但是,如果我使用以下输入对此进行测试:

console.log( solution("samurai", "ai") );

我得到以下控制台输出:

samurai, ai , /ai$/
false 

这种模式对我来说似乎是正确的,那么为什么以 'ai' 结尾的 'samurai' 返回 false 呢?

4

2 回答 2

2

如果调用RegExp构造函数,则不需要/在模式周围放置字符。这仅适用于您使用正则表达式文字时。

尝试这个:

function solution(str, ending)
{
  var pattern = ending + "$";
  var regex = new RegExp(pattern, "i");
  console.log( str + ", " + ending + " , " + regex.source);
  return regex.test(str);
}
于 2013-10-11T02:29:25.273 回答
2

new RegExp("/foo/")/\/foo\//。只有在构建正则表达式文字时才需要斜杠。

从你的字符串中取出斜线,它会起作用。

您也可以在没有正则表达式的情况下执行此操作:

str.lastIndexOf(ending) === str.length - ending.length;
于 2013-10-11T02:29:50.670 回答