Javascript正则表达式查找不以“”开头的单词;我的:"
Javascript regex to find words that do not start with "my:"
我正在尝试编写一个正则表达式,它将在大括号之间查找所有不以"my:"开头的值。例如,我想捕获{this}
,但不想捕获{my:monkey}
。
捕捉一切的模式是:
'{([^'}]*)'}
我很难让它工作。到目前为止,我最接近的镜头是:
'{[^my:]*([^'}]*)'}
这会失败,因为它只忽略以"m"、"y"或":"开头的标记。
我确信我忽略了一个命令,将"my:"视为一个块。。
(注意:必须适用于Javascript)
这个应该做:
/'{((?!my:)[^}]+)'}/g
查看快速演示http://jsbin.com/ujazul/2/edit
总结如下:
// test match thing_done but not some_thing_done (using nagative lookbehind)
console.log(/(?<!some_)thing_done/.test("thing_done")); // true
console.log(/(?<!some_)thing_done/.test("some_thing_done")); // false
// test match thing_done but not think_done_now (using nagative lookahead)
console.log(/thing_done(?!_now)/.test("thing_done")); // true
console.log(/thing_done(?!_now)/.test("thing_done_now")); // false
// test match some_thing_done but not some_thing (using positive lookbehind)
console.log(/(?<=some_)thing_done/.test("thing_done")); // false
console.log(/(?<=some_)thing_done/.test("some_thing_done")); // true
// test match thing_done but not think_done_now (using positive lookahead)
console.log(/thing_done(?=_now)/.test("thing_done")); // false
console.log(/thing_done(?=_now)/.test("thing_done_now")); // true
对话版本:
I need match some_thing_done not thing_done:
Put `some_` in brace: (some_)thing_done
Then put ask mark at start: (?some_)thing_done
Then need to match before so add (<): (?<some_)thing_done
Then need to equal so add (<): (?<=some_)thing_done
--> (?<=some_)thing_done
?<=some_: conditional back equal `some_` string
链接示例代码:https://jsbin.com/yohedoqaxu/edit?js,控制台
您可以这样做:
var input = "I want to capture {this} but not {my:monkey}";
var output = input.replace(/{(my:)?([^}]*)}/g, function($0, $1, $2) {
return $1 ? $0 : "[MATCH]";
});
// I want to capture [MATCH] but not {my:monkey}
{(?!my:)(.*?)}
在regex pal中工作:http://preview.tinyurl.com/nkcpoy7
相关文章:
- Jquery/Javascript检查我的单词是否有效
- 我在angular JS中选择了一个默认选项,并删除了两个单词之间的下划线
- 考虑到我在JavaScript中使用.replace.更改了特定单词中间的另一个字符,我如何在该单词之前添加字符
- 可以'我的单词随机化器脚本不能正常循环
- 如何检查我的字符串是否包含某些单词
- 如何检查我的 chrome 扩展程序的 if 语句中的单词列表
- jQuery - 当我的鼠标悬停在任何单词上时,如何获取任何单词的值
- 我的单词代码中的大写字母有什么问题
- Firebase应该在我的用户id结构中包含单词“;simplelogin”;
- Javascript正则表达式查找不以“”开头的单词;我的:"
- 我试着写一个条件语句,它将检查我的页面标题,看看是否找到某些单词
- 为什么当我用鼠标粘贴文本时,我的文本框单词计数代码不能工作?
- 刽子手协助.当用户用尽所有尝试或猜到单词中的所有字母时,我需要停止游戏
- 匹配一个单词可以在www.regexr.com上工作,但不能在我的网站上
- 我可以't在JavaScript中验证我的游戏的随机单词
- 有一种方法,我可以改变骆驼的情况下,以空格分隔的单词变量的内容
- Hangman Javascript -我的代码似乎没有更新的单词占位符,当一个字母猜对了
- Chrome从我的警告框中省略了单词
- 在我的代码中打印一个单词
- 添加一个额外的单词来添加我的所有URL