Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式所有字符直到word_Javascript_Regex - Fatal编程技术网

Javascript正则表达式所有字符直到word

Javascript正则表达式所有字符直到word,javascript,regex,Javascript,Regex,我有这样的字符串: blah-ha-ID: asdf 我想匹配所有字符,直到最终-ID: 所以我最初的正则表达式是: ^[^-]+ 这种方法一直有效,直到单词开始有了hypnes。因此,在上面的示例中,在blah-ha-ID:中,它将选择直到blah它应该得到blah-ha为止 所以我试着这样做,我想重复所有不是-ID ^[^-ID]+ 但这当然行不通。我不能使用捕获,我需要它来排除最后的-ID ^[^-ID]+ 除此之外,我还希望了解如何做到这一点,我记得在这些字符类中有一种方法可以重

我有这样的字符串:

blah-ha-ID:
asdf
我想匹配所有字符,直到最终-ID:

所以我最初的正则表达式是:

^[^-]+
这种方法一直有效,直到单词开始有了hypnes。因此,在上面的示例中,在
blah-ha-ID:
中,它将选择直到
blah
它应该得到
blah-ha
为止

所以我试着这样做,我想重复所有不是
-ID

^[^-ID]+
但这当然行不通。我不能使用捕获,我需要它来排除最后的
-ID

^[^-ID]+

除此之外,我还希望了解如何做到这一点,我记得在这些字符类中有一种方法可以重复到“单词”为止。

您可以使用以下正则表达式:

/^(.+?)(?=-ID|$)/
这将从开始到文字
-ID
或行尾匹配1个或多个字符
-ID
处于正向前瞻状态,因此它不会被匹配

这适用于所有人


其中,我在一行中添加了退化的
-ID:

您不需要Regexp,使用字符串的
lastIndexOf
insteadThank@hindsmost,但我需要在一个简单的替换中使用它。无需捕获和使用函数替换。您仍然可以使用
lastIndexOf
进行替换
substr
/
substring
会有帮助。@lastIndexOf的最新问题是如果没有
-ID
,该怎么办?谢谢Anubhava,但我需要它不要在末尾选择-ID:(我不能使用capuring:(感谢您的编辑,它对我的案例有效,但有可能完成我的gorup任务吗?如果可能的话,我希望学习它。有一些技巧,如
[^-[^I[^D]]]
但只要stack允许,我会尽快接受你的解决方案。对于较长的文本,这种技巧会变得非常笨拙,因此我建议只在前瞻性不可用的情况下使用。啊,问题是,如果它没有
-ID
结尾,它就没有匹配:(谢谢,这很有趣