JavaScript:组合两个正则表达式以满足这两个条件?

JavaScript:组合两个正则表达式以满足这两个条件?,javascript,regex,Javascript,Regex,如何组合多个正则表达式以满足这两个条件 下面有3个字符串和2个正则表达式: 第一个正则表达式不允许字符串以美元符号开头 第二个正则表达式不允许字符串有句点 如何组合这两个正则表达式,使字符串不以美元符号开头,并将句点视为匹配 var good_string=“flkad sdfa$a f fjf”; var bad_string_1=“$flkadjf”; var bad_string_2=“flk.adjf”; var不包含句点=新的RegExp(“^[^.]*$”); var不以“^(

如何组合多个正则表达式以满足这两个条件

下面有3个字符串和2个正则表达式:

  • 第一个正则表达式不允许字符串以美元符号开头
  • 第二个正则表达式不允许字符串有句点
如何组合这两个正则表达式,使字符串不以美元符号开头,并将句点视为匹配

var good_string=“flkad sdfa$a f fjf”;
var bad_string_1=“$flkadjf”;
var bad_string_2=“flk.adjf”;
var不包含句点=新的RegExp(“^[^.]*$”);
var不以“^(?!\\$)”符号=新的RegExp(“^(?!\$)”开头;
var组合正则表达式=新的正则表达式(“+不包含句点.source+”)(“+不包含句点.source+”);
console.log('---不包含句点--')
log(good_string.match(不包含句点));
log(不正确的字符串匹配(不包含句点));
log(不正确的字符串匹配(不包含句点));
console.log('---不以美元符号--'开头)
log(good_string.match(不以美元符号开头));
console.log(错误字符串1.match(不以美元符号开头));
console.log(错误的字符串匹配(不以美元符号开头));
log('----组合正则表达式--')
log(good_string.match(组合正则表达式));
log(错误字符串匹配(组合正则表达式));
log(错误字符串匹配(组合正则表达式));
console.log('---所需结果--')
console.log(good\u string.match(不包含句点)!==null和good\u string.match(不以美元符号开头)!==null);
console.log(坏字符串\u 1.match(不包含句点)!==null和坏字符串\u 1.match(不以美元符号开头)!==null);

console.log(坏字符串\u 2.match(不包含句点)!==null和坏字符串\u 2.match(不以美元符号开头)!==null)regexp不能以这种方式轻松组合

你最好测试一下(在这种情况下,匹配是没有意义的)所有这些

function testAll(regexps, ...args) {
  return regexps.every(regexp => regexp.test(...args));
}

var good_string = "flkad sdfa$a f fjf";
var bad_string_1 = "$flkadjf";
var bad_string_2 = "flk.adjf";

console.log(testAll([/^[^.]*$/, /^(?!\$)/], good_string));
console.log(testAll([/^[^.]*$/, /^(?!\$)/], bad_string_1));
console.log(testAll([/^[^.]*$/, /^(?!\$)/], bad_string_2));

通过使用或元字符“|”,您可以只使用一个RegX来测试这两个RegX


不能像那样简单地组合两个正则表达式<代码>/(^[^.]*$)(^(?!\$)/
永远不会匹配任何内容。你必须把第三个作为它自己的正则表达式来写。如果你把你的正则表达式放在一个数组中,那么你可以使用。这可以组合成一个正则表达式而不是循环吗?这很好,但是它可以不作为单个正则表达式来循环吗?这很接近,但我希望它是一个AND搜索,我意识到正则表达式似乎并没有操作符,所以通过将字符串作为测试传递给正则表达式,您不会受到影响。这将只返回与错误字符串匹配的字符串<代码>函数chechString(str){如果(/^\$\\./.test(str)!=true){return str;}}我无法控制如何测试regexp,我只能将regexp传递到参数中。这非常接近,但我想要的是与它产生的完全相反的结果
var regX = /^\$|\./;