如果出现某个字符串,如何使JS RegEx不匹配?

时间:2015-05-16 22:23:24

标签: javascript regex

我正在尝试在Javascript中构建一个如果出现某个字符串则不匹配的RegEx。所以我想匹配这个大括号{,但前提是它不是字符串else

我正在尝试执行此操作^ *[^else]* *{.*$但事实上,如果else字符串中出现任何字符,则该字符不匹配,例如,这与此不匹配:

erai { 我希望在{出现else {时匹配所有情况,尽管这种情况<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <mvc:annotation-driven></mvc:annotation-driven> <mvc:resources location="/WEB-INF/resource/" mapping="/resource/**"/> . . . </beans>

请你帮我。这是我的DEMO

2 个答案:

答案 0 :(得分:1)

您可以使用否定前瞻。这支持JavaScript:

(?!\s*else).+ *({).*$|

DEMO

JavaScript RegEx不支持ifs,但我们可以使用技巧来实现:

(?!RegExp)

这是第一部分,如果RegExp (这是一个正则表达式)没有出现,那么我们之后会做代码:

.+ *({).*$

这就是我们运行的RegEx。破碎了,它是:

.+       Match anything
 *       Until 0 - unlimited spaces
({)      Capture the {
.*$      Match anything till the end

现在,除非我们在末尾添加|或OR,否则这将无效。这将欺骗它像if语句一样工作

Regular expression visualization

Debuggex Demo

答案 1 :(得分:-2)

您要找的是negative lookbehind