5

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

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

例如:

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

上面的表达式应该计算为真,因为字符串“abcdefg”以“abc”开头并包含“fg”。

'startsWith'和'contains'字符串可能会相互重叠,所以正则表达式不能简单地搜索'startsWith'字符串,然后搜索'contains'字符串

以下也应该评估为真:

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

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

4

2 回答 2

10

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

/(?=.*bcd)^abc/

IE

return new RegExp("(?=.*" + contains + ")^" + startsWith);
于 2013-09-29T04:59:26.227 回答
0

试试这个正则表达式

(^X).*Y

例如在javascript中

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

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

于 2013-09-29T05:00:37.607 回答