Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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,我想使用正则表达式在JavaScript中匹配以下术语 String = 'abc AND def AND igk AND lmn' 要匹配的条件: 第一个和之前和之后的单词 例如,在上面的字符串中,匹配部分将是:abc和def 我想用JavaScript来做。所以我会打电话给你 string.match(/regex to use/) 并将其分配给一个var 有什么建议吗 编辑: 字符串的形式如下: string = 'AND abc'; string = 'abc AND

我想使用正则表达式在JavaScript中匹配以下术语

String = 'abc AND def AND igk AND lmn'
要匹配的条件: 第一个
之前和之后的单词

例如,在上面的字符串中,匹配部分将是:
abc和def

我想用JavaScript来做。所以我会打电话给你

string.match(/regex to use/)
并将其分配给一个var

有什么建议吗

编辑:

字符串的形式如下:

    string = 'AND abc';
    string = 'abc AND';
    string = 'abc def AND igk lmn';
    string = 'abc def AND';
    string = 'AND igk lmn';

感谢您在这方面的帮助。

您可以尝试以下正则表达式:

/(\w+\s+AND\s+\w+)/
编辑(阅读上次更新后):如果左右术语是可选的,请使用以下正则表达式:

/(?: (\w+) \s+)? AND (?: \s+ (\w+))?/x

您可以尝试以下正则表达式:

/(\w+\s+AND\s+\w+)/
编辑(阅读上次更新后):如果左右术语是可选的,请使用以下正则表达式:

/(?: (\w+) \s+)? AND (?: \s+ (\w+))?/x

对Igor版本的一点改进:

   var m = str.match (/(\w+)\s+AND\s+(\w+)/);
   // word before AND in m[1], word after AND in m[2] 

自动提取这两个单词。

对Igor的版本进行了轻微改进:

   var m = str.match (/(\w+)\s+AND\s+(\w+)/);
   // word before AND in m[1], word after AND in m[2] 

自动提取两个单词。

您需要删除
^
,否则如果在第一个
之前有多个单词,则此操作将失败。我已进行编辑;只要你不使用
/g
修饰符,这个正则表达式就会找到第一个出现的
加上它周围的两个单词(前提是“单词”被定义为“ASCII字母数字字符序列”)。谢谢,汤姆。我放置
^
,因为在OP上次编辑之前还不清楚到底需要匹配什么。感谢:0为了匹配我的案例,我使用它作为:/(\w*\sAND\s*\w)/您需要删除
^
,否则如果在第一个
之前有多个单词,则此操作将失败。我已完成编辑;只要你不使用
/g
修饰符,这个正则表达式就会找到第一个出现的
加上它周围的两个单词(前提是“单词”被定义为“ASCII字母数字字符序列”)。谢谢,汤姆。我之所以放置
^
,是因为在OP最后一次编辑之前不清楚需要匹配什么。谢谢:0为了匹配我的案例,我将其用作:/(\w*\sAND\s*\w)/所以前后的单词是可选的?或者只有两个词都存在时才应该匹配?是否有一个字符串
'和'
(如果有,会发生什么情况)?如果您的字符串是
'abc'
(完全没有),您是否有兴趣匹配
abc
(没有)?如果我之前或之后没有单词,并且没有问题,我将变为空白。如果只是现在,我的两个字都将是空白的。因此,单词是可选的,可以出现也可以不出现。我将在之后验证它们,并传递null。那么before/after是可选的吗?或者只有两个词都存在时才应该匹配?是否有一个字符串
'和'
(如果有,会发生什么情况)?如果您的字符串是
'abc'
(完全没有),您是否有兴趣匹配
abc
(没有)?如果我之前或之后没有单词,并且没有问题,我将变为空白。如果只是现在,我的两个字都将是空白的。因此,单词是可选的,可以出现也可以不出现。我将在之后验证它们,并已通过null。我将其用作:/(\w*)\sAND\s*(\w)/。谢谢,我将其用作:/(\w*)\sAND\s*(\w)/。非常感谢。