首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在regex中实现时,在JS中找不到负的先行表达式

在regex中实现时,在JS中找不到负的先行表达式
EN

Stack Overflow用户
提问于 2020-04-04 23:00:54
回答 1查看 22关注 0票数 0

据我所知,负向先行查找是为了确保搜索模式中的元素不在那里。负的先行查找被用作(?!...)在哪里..。是你不想出现在那里的模式。如果不存在负先行部分,则返回模式的其余部分。

下面是我的代码:

代码语言:javascript
复制
let str = "1Kill";

let regex = /(?!\d)/; or regex = /(?![^0-9])/;

let result = regex.test(str);

这里我得到了result = true;,但是,我不明白为什么?

我也查过了,regex = /(?=[^0-9])/;

我得到了同样的结果。我想检查“字符串中的第一个字母是否是数字/数字”,但是我不能用负Lookahead来检查,但是我可以用"regex = /(?=^[^0-9])/;“来做。

谁能帮帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-04 23:18:17

您当前的正则表达式所做的是无法匹配1,然后在1|kill处匹配,因为此时它不再有数字,因为您的正则表达式匹配字符串中的单个字符。

下面是一个可以使用负向先行的例子:/^(?!\D*(?:\d\D*)+$)/这里的主要区别是,它匹配字符串的开头,然后在负向先行之前将字符串锚定到开头。然后它检查字符串中末尾($)之前是否有任何数字。

另一种可能是:/\d/,然后你可以通过颠倒测试来使用它。这可能是更好的选择,因为它比负面先行的情况更容易看到它是如何工作的。

代码语言:javascript
复制
let str = "1Kill";

let regex = /\d/;

let result = !regex.test(str);

https://regex101.com/是一个非常好的资源,可以用来查看您的正则表达式正在做什么,以及它们执行了多少步骤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61030013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档