Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个「;及;Javascript中正则表达式的运算符?_Javascript_Regex - Fatal编程技术网

是否有一个「;及;Javascript中正则表达式的运算符?

是否有一个「;及;Javascript中正则表达式的运算符?,javascript,regex,Javascript,Regex,也就是说,有没有办法找到字符串的哪些部分与两个或多个正则表达式匹配,例如string.replace(/foo/g,/bar/g,“baz”) 编辑:不,我不想找一个正则表达式来匹配这两个正则表达式。更合适的例子是string.replace(foo,/bar/g,“baz”) 编辑2:对不起,我是新用户。一个示例输入是“abc”。替换(x,/[bc]/g,“[match]”,其中x是一个值为/[ab]/g的变量,在这种情况下应返回a[match]c鉴于您的示例,我认为您的意思是“或”,而不是“

也就是说,有没有办法找到字符串的哪些部分与两个或多个正则表达式匹配,例如
string.replace(/foo/g,/bar/g,“baz”)

编辑:不,我不想找一个正则表达式来匹配这两个正则表达式。更合适的例子是
string.replace(foo,/bar/g,“baz”)


编辑2:对不起,我是新用户。一个示例输入是
“abc”。替换(x,/[bc]/g,“[match]”
,其中
x
是一个值为
/[ab]/g
的变量,在这种情况下应返回
a[match]c

鉴于您的示例,我认为您的意思是“或”,而不是“和”。
|
运算符可用于以下操作:

string.replace(/(foo|bar)/g, "baz");
一个示例输入是“abc”。替换(x,/[bc]/g,“[match]”,其中x是一个值为/[ab]/g的变量,在这种情况下应返回[match]b

听起来您正在寻找捕获组和
replace
回调

  • 捕获组是正则表达式的一部分,告诉引擎“捕获”匹配该部分的位

  • replace
    回调是一个函数,
    replace
    将为每个匹配调用,允许您创建替换文本。函数被传递给整个匹配和任何捕获组

例如,如果你想匹配字母a-z和数字0-9之间的任何东西,并对两者之间的位做些什么:

var result = "afoo9".replace(/([a-z])(.+)([0-9])/g, function(match, c0, c1, c2) {
    return c0 + c1.toUpperCase() + c2;
});
  • ([a-z])
    表示“匹配从
    a
    z
    的任何字符并捕获它”

  • (.+)
    表示“在此处匹配一个或多个字符并捕获它们”

  • ([0-9])
    表示“匹配从
    0
    9
    的任何字符并捕获它”(也可以写入
    (\d)

当然,这是非常做作的,您可能希望在每一端匹配多个字符,但这是一个正则表达式细节

实例:

var str=“afoo9”;
变量结果=str.replace(/([a-z])(.+)([0-9])/g,函数(匹配,c0,c1,c2){
返回c0+c1.toUpperCase()+c2;
});
log(“字符串:”+str);
log(“结果:+Result”)


您可以首先使用第一个正则表达式提取满足第一条规则的字符串,然后使用第二个正则表达式(或替换为正则表达式)执行操作

用什么代替什么?请详细说明,我不明白你是什么asking@BobTheAwesome对于您来说,
string.replace(/foo/g,/bar/g,“baz”)
字符串。替换(foo,/bar/g,“baz”)
?只需执行
string.replace(/(foo | bar)/g,“baz”)
什么是
string.replace(foo,/bar/g,“baz”)。
的意思是什么?通常情况下,你最好在这里展示输入和期望的输出。我认为这是一个好问题,需要更多的澄清。我想我们大多数人都很困惑,我的意思是。例如,匹配文档正文HTML中的字符,这些字符是A,但也不在HTML标记中(例如“span”)。@BobTheAwesome:。使用解析器解析HTML。@T.J.Crowder我正在创建一个脚本,为尚未命名的文档中的字符着色,这是我在KACS环境中编写的一种深奥的编程语言。脚本将遍历字符并环绕,例如,在
@BobTheAwesome:中调节程序流的字符,这意味着您必须以不同于非文本字符串的方式处理文本字符串中的关键字,并且该语言可能允许转义字符串周围的引号。遗憾的是,正则表达式不是适合这项工作的工具。现在,如果你不需要处理不在文本字符串中进行的操作,那就不同了…@BobTheAwesome:顺便说一句,这听起来和你在问题中描述的完全不同。我知道这两个都是什么,我要的是“And”操作符!字符串的哪些部分与两个正则表达式匹配?这不是我问题的答案@BobTheAwesome:没必要大喊大叫。如果这没有回答您的问题,那么您的问题仍然很不清楚。@BobTheAwesome,没有这样的操作符。T.J.Crowder向您展示了最接近的近似值。