正则表达式:无法检查一行是否以单词结尾

时间:2014-04-04 16:36:31

标签: javascript regex node.js

正如我上面写的那样,如果它没有以特定的单词结尾("完成。"),我想得到(对不起,我写了支票)一行,并且它以这个字符开头:" [ - ]"。

示例:

[-] Blabla bla bla. [✓]
[*] Blabla bla done. [X]
[.] Bla bla bla done. [X]

这是我的尝试:

   /\[-\](.*)[^done\.]$/gmi

你知道我怎么做吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

就这样:

/^\[-\](?!.*\bdone\.(?:[\n\r]|$))/mgi

(?!.*\bdone\.(?:[\n\r]|$))是负面的预测。检查该行是否以done.

结尾

^[-]正在检查连字符是否在字符串的开头。

\b是一个单词边界,因此它不会选择像xyzdone.

这样的单词

(?:[\n\r]|$)正在检查字符串的结尾或换行符。

答案 1 :(得分:1)

由于您已将其标记为,因此您可以执行以下操作:

function check(input,word)
{
  return /^\[-].+/.test(input) && !new RegExp(word +"$").test(input);
}

这样称呼:

check('[-] e3r34 done.','done.'); // false
check('[-] e3r34 not.','done.'); // true