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

时间:2013-09-29 04:54:17

标签: javascript regex

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

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查询。

2 个答案:

答案 0 :(得分:9)

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

/(?=.*bcd)^abc/

return new RegExp("(?=.*" + contains + ")^" + startsWith);

答案 1 :(得分:0)

试试这个正则表达式

(^X).*Y

E.g。在javascript中

  

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

     

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