繁体   English   中英

如何使用正则表达式用JavaScript排除单词?

[英]How to exclude a word with JavaScript using regular expressions?

我是新的使用正则表达式,我想知道是否可以排除一个单词。 我有以下数据列表:

cat.text"
cat.doc"
dog.txt"
dog.text"
frog.txt"
dog.text"
dog.  text"
cat. text"
cat. text "

从这个数据,我想只得到.text" (或者. text ".text "等)的一部分,但我不希望包括.text"从包含任何项目cat 到目前为止,我能够得到所有的.text"但不知道如何用cat word排除那些。我到目前为止\\.\\s*text\\s*"并且它得到了

cat.text"  <--
cat.doc"
dog.txt"
dog.text"   <--
frog.txt"
dog.text"   <--
dog.  text"  <--
cat. text"    <--
cat. text "   <--

有帮助吗? 谢谢!

我能够得到所有的.text“但不知道如何排除那些带有”cat“字的那些。

您可以使用以下正则表达式:

/^(?!cat).*\.\s*text/m

如果您希望匹配不考虑字母大小写,可以在末尾添加不区分大小写的i标志(例如, mi )。

说明:

^       // assert position at start of a line (with the multiline 'm' flag)
(?!cat) // negative lookahead to prevent matching if line starts with cat
.*      // match any number of characters excluding linebreak characters
\.      // match "." literally
\s*     // match any number of whitespace characters
text    // match "text" literally
        // flags: 
        // "m" - multiline, matches on a per line basis)

Regex101


编辑:如果要将后缀标记与结束引号匹配,可以使用以下命令:

/^(?!cat).*(\.\s*text\s*\")/m

Regex101

请注意Regex101右侧的匹配信息。 假设正确使用字符串/正则表达式方法, ()捕获匹配到输出。

如何使用String.prototype.match提取捕获的组的示例:

 var strArr = [ 'cat.text"', 'cat.doc"', 'dog.txt"', 'dog.text"', 'frog.txt"', 'dog.text"', 'dog. text"', 'cat. text"', 'cat. text "', 'dogtext', 'textexttext']; var re = /^(?!cat).*(\\.\\s*text\\s*\\")/mi; var testDiv = document.querySelector('.testString'); var resultDiv = document.querySelector('.resultString'); strArr.forEach(function(str) { testDiv.insertAdjacentHTML('beforeend', str + '<br>'); if (str.match(re)) resultDiv.insertAdjacentHTML('beforeend', str.match(re)[1] + '<br>'); else resultDiv.insertAdjacentHTML('beforeend', '<br>'); }); 
 .testString { display: inline-block; } .resultString { display: inline-block; position: relative; left: 10%; } 
 <div class='testString'></div> <div class='resultString'></div> 

我在使用string.prototype.match时删除了g标志,因为你想要捕获的组。 使用g标志返回整个匹配字符串。

你可以这样做......

  1. 将字符串分成两部分
  2. 使用其中一个部分来检查您是否排除(或包括)该部分
  3. 返回其他部分(或两者如果你想)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM