如果找到'^',则表示失败的正则表达式?

问题描述:

我有割掉字符串如果找到'^',则表示失败的正则表达式?

(^[0-9]+)|(^\-[0-9]+) 

即第一整数部分与'12x',切片它将返回一个'12'正则表达式。我想扩展它,以便在字符串中存在'^'时失败。我尝试使用负向预测

(?!\^)(^[0-9]+)|(^\-[0-9]+) 

但这不起作用,因为它仍然与例如'12^x'。我也试过之前没有'\',但它没有匹配任何东西。我哪里错了?

这是你的电流负前瞻:

(?!\^) 

这种超前的问题是,它使用了错误的模式来实现你想要的。它只是向前看一个字符,这意味着它不能检查整个字符串,直到结束时才出现或不出现克拉。

^(?!.*\^)-?[0-9]+$ 

说明:

^(?!.*\^) from the start of the string, look ahead and assert that no carat appears 
-?[0-9]+$ match an optional minus sign, followed by any number of digits 

演示在这里:

Regex101

+0

谢谢!我在正则表达式中忘记了'''它是非常有用的。尽管我仍然希望它与不仅包含整数的字符串相匹配,但它完美地工作,所以我只是将'$'放在最后。 – user6731064

+0

@ user6731064这对我来说不是很清楚,如果删除'$'可以修复你的问题,那就尽一切办法去做。 –

+0

*此外,你已经把它放在正则表达式开始之前* - 这个~~不〜不应该(?)重要;它们都是零宽度断言,应该能够以任意顺序出现。 – Rawling