gpt4 book ai didi

JavaScript 的否定前瞻没有按预期工作?

转载 作者:行者123 更新时间:2023-11-29 16:11:21 25 4
gpt4 key购买 nike

我在 textarea 中有一些数据:

(是的,它是多行的)

"@ObjectTypeID", DbType.In
"@ObjectID", DbType.Int32,
"@ClaimReasonID", DbType.I
"@ClaimReasonDetails", DbTy
"@AccidendDate", DbType.Da
"@AccidendPlaceID", DbType
"@AccidendPlaceDetails", Db
"@TypeOfMedicalTreatment",
"@MedicalTreatmentDate", Db
"@CreatedBy", DbType.Int32
"@Member_ID", DbType.Strin
.ExecuteScalar(command).ToS

在每一行中 - 我想删除这些部分:(从 "(包括)到行尾):

视觉上:(我只采样了 4 个)

enter image description here

我已经做到了:

   value=value.replace(/\"[a-z,. ]+(?!.*\")/gi,'') 

这意味着:搜索第一个 ",它后面有章程,没有 future 的 "

这将产生所需的结果:

"@ObjectTypeID
"@ObjectID32,
"@ClaimReasonID
"@ClaimReasonDetails
"@AccidendDate
"@AccidendPlaceID
"@AccidendPlaceDetails
"@TypeOfMedicalTreatment
"@MedicalTreatmentDate
"@CreatedBy32
"@Member_ID
.ExecuteScalar(command).ToS

问题:

我明白它为什么起作用,但我不明白为什么以下不起作用:

value=value.replace(/\".+(?!.*\")/gi,'')

http://jsbin.com/fanep/4/edit

我的意思是:它应该搜索 " 后面有章程的地方,没有有 future 的 " ....

我错过了什么?我真的很讨厌声明 [a-z,. ]

最佳答案

+ 是贪婪的。由于“整个事情”符合您的“之后不能有 的规则,因此它会随之而来。

您的第一个正则表达式起作用的原因是因为您通过明确地将某些字符列入白名单来禁止大多数字符。

要解决这个问题,请尝试在 + 之后添加 ? - 这将使它变懒,在满足规则的同时尽可能少地匹配。


此外,您正在搜索要保留的内容...然后将其删除。

试试这个:

val = val.replace(/"[^"]*(?=[\r\n]|$)/g,'');

这将删除从最后一个 " 到一行结尾(或输入结尾)的所有内容。

关于JavaScript 的否定前瞻没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26991337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com