我正在尝试编写一个构建正则表达式的函数,该函数可以测试字符串是否以字符串开头并包含另一个字符串。
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查询。
答案 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')=>真