Javascript 字符串的正则表达式以X开头,包含Y

Javascript 字符串的正则表达式以X开头,包含Y,javascript,regex,Javascript,Regex,我正在尝试编写一个函数,它构建了一个正则表达式,可以测试一个字符串是否以一个字符串开头并包含另一个字符串 function buildRegExp(startsWith,contains){ return new RegExp( ????? ) } 例如: buildRegExp('abc','fg').test('abcdefg') 上述表达式的计算结果应为true,因为字符串“abcdefg”以“abc”开头并包含“fg” “startsWith”和“contains”字符串可能

我正在尝试编写一个函数,它构建了一个正则表达式,可以测试一个字符串是否以一个字符串开头并包含另一个字符串

function buildRegExp(startsWith,contains){
    return new RegExp( ????? )
}
例如:

buildRegExp('abc','fg').test('abcdefg')
上述表达式的计算结果应为true,因为字符串“abcdefg”以“abc”开头并包含“fg”

“startsWith”和“contains”字符串可能相互重叠,因此正则表达式不能简单地搜索“startsWith”字符串,然后搜索“contains”字符串

以下各项也应评估为真:

buildRegExp('abc','bcd').test('abcdefg')

我不能使用简单的字符串函数。它需要是一个正则表达式,因为我正在将此正则表达式传递给MongoDB查询。

这样的模式将处理
startsWith
/
包含的子字符串在匹配字符串中重叠的情况:

/(?=.*bcd)^abc/
i、 e

试试这个regexp

(^X).*Y
例如,在javascript中

/(^ab)。*bc/.test('abc')=>false

/(^ab)。*bc/.test('abcbc')=>true


等等,我不明白第二部分。“bce”不在字符串中。我想第二个示例应该是
buildRegExp('abc','bcd')。test('abcdefg')
刚刚准备提交我答案的更新,但您首先得到了它。很好。有兴趣看到这与传统
return s.startsWith(startsWith)和&s.contains(contains)之间的一些基准测试+1,紧凑高效。一直在享受你的正则表达式答案,干得好。:)这不适用于重叠的情况。您的第一个示例应该返回
true
(^X).*Y