Javascript正则表达式获取word,但从注释块中排除
假设我在一个文件中有以下内容Javascript正则表达式获取word,但从注释块中排除,javascript,regex,Javascript,Regex,假设我在一个文件中有以下内容 <button aria-label="<?php echo JText::_('JCANCEL'); ?>"> // JText /** * Comment block * ------------------ * @param JText * */ 对于/**、*/和//来说,这看起来确实是正面的,但是在测试时,它会返回所有内容,包括JText: <button aria-label="<?php echo
<button aria-label="<?php echo JText::_('JCANCEL'); ?>">
// JText
/**
* Comment block
* ------------------
* @param JText
*
*/
对于/**
、*/
和//
来说,这看起来确实是正面的,但是在测试时,它会返回所有内容,包括JText:
<button aria-label="<?php echo JText
关于解析器,这是一个很好的观点,但如果您愿意冒险,只需将文本作为一个组:
^\s*(?=\S)(?!\/\*\*)(?!\/\/)(?!\*).*(\\?)(JText)
您需要一个语法分析器。假设您有var s=“bad string/*here”然后,几乎不可能知道注释是否以字符串文字开头。您也需要考虑到这一点,最终,您将编写语言解析器,它应该已经存在了。[0]
元素始终是完整匹配,它包含了JText
之前的所有内容,因此您需要添加一些捕获组来澄清匹配。谢谢Andrew。您的代码几乎就在这里,但是JText
之前的可选反斜杠未包含在匹配中。最后,将*
替换为(.*)
^\s*(?=\S)(?!\/\*\*)(?!\/\/)(?!\*).*(\\?)(JText)