Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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_String - Fatal编程技术网

Javascript 使用正则表达式匹配表达式

Javascript 使用正则表达式匹配表达式,javascript,regex,string,Javascript,Regex,String,我有一个正则表达式可以选择匹配项,如图所示 但这不会选择连接器协议(CP),也就是说,如果单词的长形式和括号之间没有空格。如何使正则表达式选择括号之间有空格和括号之间没有空格的表达式 但是,它必须同时选择连接器协议{space}(CP)和连接器协议{no space}(CP)保持简单(KISS) 为了更好地处理建立规范电缆(SC)的标准和等情况,例如安全套接字层(SSL),仅使用RegEx是不够的。使用以下脚本 const text=“通用串行总线(USB)是一个行业标准,它建立了规范电缆(S

我有一个正则表达式可以选择匹配项,如图所示

但这不会选择连接器协议(CP),也就是说,如果单词的长形式和括号之间没有空格。如何使正则表达式选择括号之间有空格和括号之间没有空格的表达式

但是,它必须同时选择连接器协议{space}(CP)和连接器协议{no space}(CP)

保持简单(KISS)

为了更好地处理建立规范电缆(SC)的
标准和
等情况,例如安全套接字层(SSL)
,仅使用RegEx是不够的。使用以下脚本


const text=“通用串行总线(USB)是一个行业标准,它建立了规范电缆(SC)和连接器协议(CP)这是一个用于找到连接的规范(CF)保持简单愚蠢(KISS)!例如,安全套接字层(SSL)无法匹配帧开始(SOF)、帧开始(SOF)、带碰撞检测的载波侦听多址(CSMA/CD)、通用串行总线测试和测量类(USBTMC)以及我如何允许使用2级缩写“电池充电(BC)、通信通道(CC)”您能帮忙吗?悲伤之痛(PG)带碰撞检测的载波侦听多址(CSMA/CD)”;
const regex=new RegExp(text.match(/\([A-Z\/])+(?=\)/g).map(m=>
m、 分割(“”).slice(1).map(i=>i.replace(//\//g,“”+“\\S*”).join((?:\\S+(?:(?:和| in | with)\\S+)?\\S*[-&]\\S*))
.concat(“\\s*\\”+m+“\\)”)
).join(“|”),“gi”);
让我们比赛;
while(match=regex.exec(text)){
log(`${regex.lastIndex-match[0].length}-${regex.lastIndex}:${match[0]}`);
}
保持简单愚蠢(亲吻)

为了更好地处理建立规范电缆(SC)的
标准和
等情况,例如安全套接字层(SSL)
,仅使用RegEx是不够的。使用以下脚本


const text=“通用串行总线(USB)是一个行业标准,它建立了规范电缆(SC)和连接器协议(CP)这是一个用于找到连接的规范(CF)保持简单愚蠢(KISS)!例如,安全套接字层(SSL)无法匹配帧开始(SOF)、帧开始(SOF)、带碰撞检测的载波侦听多址(CSMA/CD)、通用串行总线测试和测量类(USBTMC)以及我如何允许使用2级缩写“电池充电(BC)、通信通道(CC)”您能帮忙吗?悲伤之痛(PG)带碰撞检测的载波侦听多址(CSMA/CD)”;
const regex=new RegExp(text.match(/\([A-Z\/])+(?=\)/g).map(m=>
m、 分割(“”).slice(1).map(i=>i.replace(//\//g,“”+“\\S*”).join((?:\\S+(?:(?:和| in | with)\\S+)?\\S*[-&]\\S*))
.concat(“\\s*\\”+m+“\\)”)
).join(“|”),“gi”);
让我们比赛;
while(match=regex.exec(text)){
log(`${regex.lastIndex-match[0].length}-${regex.lastIndex}:${match[0]}`);

}
您可以使用此纯正则表达式修复匹配:

/\b(\w)[-'\w]*(?: (\w)(?=[^(]*\([^)]*\2)[-",\/\\*&'\w]*)*\s*\(\1[A-Z]+\)/g

正则表达式详细信息:

  • \b(\w)[-'\w]*
    匹配单个单词并捕获组#1中的第一个字母
  • (\w)(?=[^(]*\([^)]*\2)
    :匹配一个单词字符并在第2组中捕获,只要该字母出现在下一个
    (…)
  • [-”,\/\*&'\w]*
    :匹配同一单词中多个允许字符的0个部分
  • (?:(\w)(?=[^(]*\([^)]*\2][-”,\/\\*&'\w]*)*
    :匹配0或由单个空格分隔的此类单词
  • \s*
    匹配
    (…)
  • (\1[A-Z]+\)
    :匹配
    cp

您可以使用此纯正则表达式修复匹配:

/\b(\w)[-'\w]*(?: (\w)(?=[^(]*\([^)]*\2)[-",\/\\*&'\w]*)*\s*\(\1[A-Z]+\)/g

正则表达式详细信息:

  • \b(\w)[-'\w]*
    匹配单个单词并捕获组#1中的第一个字母
  • (\w)(?=[^(]*\([^)]*\2)
    :匹配一个单词字符并在第2组中捕获,只要该字母出现在下一个
    (…)
  • [-”,\/\*&'\w]*
    :匹配同一单词中多个允许字符的0个部分
  • (?:(\w)(?=[^(]*\([^)]*\2][-”,\/\\*&'\w]*)*
    :匹配0或由单个空格分隔的此类单词
  • \s*
    匹配
    (…)
  • (\1[A-Z]+\)
    :匹配
    cp

如果最大空间数为1,可能与帧开始(SOF)、帧开始(SOF)、带碰撞检测的载波侦听多址(CSMA/CD)、通用串行总线测试和测量等级(USBTMC)不匹配,以及如何允许使用2级缩写词电池充电(BC)、通信通道(CC)您能帮忙吗!@CodeGuy更新为涵盖
-
和`和`之间的内容。非常感谢您,是否可以使用更通用的缩写而不是只允许和?有时我们可能会有类似痛苦中的痛苦(PG)这样的缩写。可能允许更通用,而不是在我们的正则表达式中列出每一个。我的意思是,我们可以允许中间有一个通用词…带冲突检测的载波侦听多址访问(CSMA/CD)可能会放入
如果最大空间数为1,则可能与帧开始(SOF)和帧开始(SOF)不匹配、带碰撞检测的载波侦听多址接入(CSMA/CD)、通用串行总线测试和测量等级(USBTMC)以及如何允许使用2级缩写词电池充电(BC)、通信信道(CC)您能帮忙吗!@CodeGuy更新为涵盖
-
和`和`之间的内容。非常感谢您,是否可以使用更通用的缩写而不是只允许和?有时我们可能会有类似痛苦中的痛苦(PG)这样的缩写。可能允许更通用,而不是在我们的正则表达式中列出每一个。我的意思是,我们可以允许在两者之间使用一个通用词…载波侦听多址与冲突检测(CSMA/CD)情况如何
standar
/\b(\w)[-'\w]*(?: (\w)(?=[^(]*\([^)]*\2)[-",\/\\*&'\w]*)*\s*\(\1[A-Z]+\)/g