问题标签 [regex-negation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
regex - 如何使用正则表达式捕获除 cat、dog、fish 之外的所有非空字母序列?
如果表达式很复杂,请解释为什么表达式有意义。
regex - 正则表达式匹配前面没有“html”的“wap”
我正在使用 NGINX 来分割移动 WAP/HTML 站点之间的移动流量。看起来最好的方法是通过检查 HTTP Accept Header 来检查 UA 对内容的偏好。
WAP 的偏好由在标题中出现在“html”或通配符 mimetype 之前的“wap”mimetype 来表示。
所以索尼爱立信 w300i 偏爱 WAP:
Blackberry Bold 对 HTML 有偏好:
由于我在 NGINX 领域,我拥有的最好的工具似乎是 NGINX 的正则表达式(PCRE)。
现在我正在尝试使用否定的前瞻来断言“接受标头包含 WAP,但前面没有 HTML”:
但这是不正确的。我可以用不同的方式思考这个问题吗?还是我的匹配逻辑?
到目前为止,我发现这些正则表达式资源很有用:
http://www.regular-expressions.info/completelines.html http://www.zytrax.com/tech/web/regex.htm http://wiki.nginx.org/NginxHttpRewriteModule
谢谢!
感谢您的回答,以下是相关测试:
php - 排除所有不在列表中且不在短语列表中的字符
我正在尝试在 PHP 中创建一个函数来评估数学表达式——包括诸如 sin、cos 等函数。我的方法是删除短语中不是数字、数学运算符或数学函数的所有字符,并且然后在 eval() 中使用该字符串。问题是我对正则表达式的了解不够,无法否定同一表达式中的字符和短语。
到目前为止,这就是我所拥有的:
显然,sin、cos 和 tan 的字符可以在输入表达式中以任何顺序使用(而不是只允许使用短语 sin、cos 和 tan)。如果我进一步扩展此功能以包含更多字符和功能,则会带来更大的安全风险,因为恶意用户将能够通过与应用程序的巧妙交互来执行几乎任何 PHP 命令。
谁能告诉我如何修复我的正则表达式并消除这个问题?
c# - 如何通过正则表达式设置第一个字符?
第一个字符可以是除等号 ( =
) 以外的任何字符。
我做了以下正则表达式:
ab
,b2
等会通过,=a
不会。
但问题是,我也想接受单个字符:
a
也应该被接受。我怎样才能做到这一点?
更新
你可能想知道我为什么要这么做。我有一个 URL 正则表达式
(?!=)((www\.|(https?|ftp)://)[.a-z0-9-]+\.[a-z0-9/_:@=.+?,#%&~-]*[^.'#!()?, ><;])
=
但如果 URL 就在字符之后,我不希望它被解析。
regex - 否定正则表达式中的交替
我可以在正则表达式中使用“交替”来匹配任何出现的“猫”或“狗”:
是否有可能否定这种交替,并匹配任何不是“猫”或“狗”的东西?
如果是这样,怎么做?
例如:
假设我正在尝试以近似的方式匹配英语中的 END OF SENTENCE。
以机智:
与以下段落:
敏捷的棕色狐狸跳过了懒狗。曾几何时,桑切斯博士、帕森斯先生和梅森州长去了商店。你好世界。
我在 Dr.、Mr. 和 Gov 错误地找到了“句末”。
(我正在使用http://regexpal.com/进行测试,以防您想查看我在上面的示例中看到的内容)
由于这是不正确的,我想说的是:
当然,这不起作用,这就是我寻求帮助的原因。
我也试过了!/(Dr.|Mr.|Gov.)/,和!~这没有任何帮助。
如何避免匹配“Dr.”、“Mr.” 和“政府”等?
提前致谢。
regex - 帮助特定的正则表达式 - 不包含某些字符串
我怎么说,在正则表达式中:
字符串的任何部分以大写字母开头,至少包含一个空格字符,不包含字符串
" _ "
(空格下划线空格),并以字符串“!!!”结尾 (不带引号)?
我在“不包含”部分遇到问题。
这是我到目前为止所拥有的:
如何修改它以同时指定“不包含'_'”?
它不需要是特定的字符串“_”。我怎么能说“不包含”任何字符串?例如不包含“狗”?
编辑:我希望解决方案与 PHP 的“preg_replace”兼容
编辑:示例:
“_”的例子:
abc xyz!!!<---匹配
你好世界!!!<---匹配
有_空格下划线空格!!!<--- 不匹配
“狗”的例子:
什么狗啊!!!<--- 不匹配,(包含“狗”)
你好世界!!!<--- 匹配
regex - 如何在不进行复杂手工编辑的情况下将任何正则表达式变成自身的补充?
以下是伪示例,不是真正的正则表达式,但仍然是我的意思的示例:
编辑:在问题中将逆改为补。这是进行更改的地方:“将任何正则表达式转换为自身的补充”
.net - Reg Ex 否定
我正在使用.Net。我想匹配具有 az、AZ、空格和单引号以外的字符的姓氏,字符的 len 不应介于 1-40 之间。必须匹配的字符串是这样的 XML<FirstName>SomeName</FirstName><LastName>SomeLastName</LastName><Address1>Addre1</Address1>
我写了正则表达式,但仅匹配
[a-zA-Z'.\s]{1,40} <LastName>[a-zA-Z'.\s]{1,40}</LastName>
编辑:LastName 标记丢失。但我想否定这个表达。这是可能的还是我应该采取不同的方法?
.net - Reg Ex 否定在 XML 字符串中不起作用
我正在尝试对.Net 中的正则表达式应用否定。这没用。当字符串具有有效的姓氏时,reg ex 不应匹配。对于无效的姓氏,它应该匹配。有效名称仅允许字符、空格、单引号和 1-40 之间的长度。有人建议解析 XML,我不想这样做。我知道还有另一种方法可以通过删除 reg ex 中的否定并反转代码中的匹配条件来做到这一点。但我也不想这样。为此,我需要纯 reg ex 解决方案。
这是我的代码。这确实与有效的姓氏相匹配。但我不想匹配。
编辑:这里有一些混乱,让我举一些我打算做的例子。当姓氏有效时,reg ex 不应匹配。例如下面的示例不应与 reg ex 匹配
情况1
案例2
案例3
当姓氏无效时,reg ex 应该匹配
案例4
案例5
案例6
如果您需要更多信息,请告诉我
regex - 正则表达式用于否定匹配的结尾
我需要一个正则表达式来匹配不以某些术语结尾的字符串。
输入是一堆类名,如Foo
, FooImpl
, FooTest
,FooTestSuite
等。
我想匹配任何不以 , 或 结尾Test
的Tests
东西TestSuite
。
应该匹配:
FooImpl
FooTestImpl
Foo
不应该匹配:
FooTest
FooTestSuite
FooTests
我只是无法做到这一点。我现在拥有的是错误的,所以我什至不会费心发布它。