我有一个单词列表:
Sup
Past
P.S. Away
Test
Set
Lapse
Space
现在,当我输入ps时,我需要匹配包含一次" p"的所有单词。和" s"在这个词中。 所以输出将是:
Sup
Past
P.S. Away
Lapse
Space
Regexes尝试:
/ps/ // checks for ps as a combination
/p{1}.s{1}/ // Selects the needful but not sup or space (s preceding p)
答案 0 :(得分:2)
像这样使用正面展望
/^(?=.*p)(?=.*s).*$/mi
^
将正则表达式锚定在字符串的开头
(?=.*p)
正面向前看。检查字符串是否包含p
(?=.*s)
正面向前看。检查字符串是否包含s
.*
匹配任何内容
$
将正则表达式锚定在字符串的末尾
答案 1 :(得分:1)
^(?=.*p)(?=.*s)[a-z .]+$
试试这个。看看演示。
http://regex101.com/r/yR3mM3/33
var re = /^(?=.*p)(?=.*s)[a-z .]+$/gmi;
var str = 'Sup\nPast\nP.S. Away\nTest\nSet\nLapse\nSpace';
var m;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
答案 2 :(得分:1)
答案 3 :(得分:0)
尝试以下正则表达式:
(((s{1}|S{1})(\w*|\W*)(p{1}|P{1}))|((p{1}|P{1})(\w*|\W*)(s{1}|S{1})))