Javascript 在每个单词中查找给定/特定字符的第一个匹配项

Javascript 在每个单词中查找给定/特定字符的第一个匹配项,javascript,regex,Javascript,Regex,stringi=“fuunynsdfdn dfdfomdfdnd dfdntr ndfdf thatfdfdfd” 我能够制作一个正则表达式来动态地查找每个单词中最后出现的字符X:(我动态地调用它,因为我只需要更改一个位置) (n)(?!(\w+?)?\1(\w+?)?)给出 "fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd" ^ ^ ^ ^ ^ "fuunny

stringi=“fuunynsdfdn dfdfomdfdnd dfdntr ndfdf thatfdfdfd”

我能够制作一个正则表达式来动态地查找每个单词中最后出现的字符X:(我动态地调用它,因为我只需要更改一个位置)

(n)(?!(\w+?)?\1(\w+?)?)
给出

"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
            ^          ^       ^   ^         ^
"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
           ^            ^   ^         ^              ^
"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
    ^                  ^      ^    ^         ^
"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
         ^    ^           ^         ^          ^
(d)(?!(\w+?)?\1(\w+?)?)
给出

"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
            ^          ^       ^   ^         ^
"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
           ^            ^   ^         ^              ^
"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
    ^                  ^      ^    ^         ^
"fuunnynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatnfdfdfdfd"
         ^    ^           ^         ^          ^
问题: 如何获得“动态”正则表达式。这意味着我必须替换上面的一个点,才能得到:

一些带有>>>n的正则表达式
带>d的pcodesome正则表达式
这意味着我必须更换一个位置

首先匹配
n
然后匹配其他所有内容:

n(\S*)
var str=“fuunynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatfdfdfd”;
var char='n';
log(str.replace(新的RegExp(char+'(\\S*),'g'),'*$1'));
var char='d';
log(str.replace(新的RegExp(char+'(\\S*),'g'),'*$1'))
这意味着我必须更换一个位置

首先匹配
n
然后匹配其他所有内容:

n(\S*)
var str=“fuunynsdfdn dfdfomdfdnd dfdfnntr ndfdf thatfdfdfd”;
var char='n';
log(str.replace(新的RegExp(char+'(\\S*),'g'),'*$1'));
var char='d';
log(str.replace(新的RegExp(char+'(\\S*),'g'),'*$1'))在中,对于不固定长度的javascript,lookback似乎没有问题。这就是正则表达式:

(?<=\b[^\Wd]*)d
(?在中,对于非固定长度的javascript,lookbehind似乎可以使用。因此,这是正则表达式:

(?<=\b[^\Wd]*)d

(?你说你需要替换一个点。如果你在回答中运行代码片段,你会看到它是如何工作的。@AndreElricoYeah,你的解决方案是绝对有建设性的。我只是好奇我是否会直接匹配它们,比如在regex101上突出显示。是的,这也是正确的。但它不会在所有的regEx解释器(PHP)上工作我必须改变两个点。无论如何,我浪费了太多的时间。非常感谢你对这件事的关注。并不是所有的正则表达式风格都支持无限的lookbehinds。NET是有能力的。PHP不是。JS将随它一起提供。你可以做
(n)(?也是,需要更改一个点。这在Chrome中有效,但原因是我不知道它在regex101上不起作用。@AndreElricoYou说需要替换一个点。如果你运行代码段来回答,你会看到它是如何工作的。@AndreElricoYeah,你的解决方案是绝对有建设性的。我只是好奇我是否能匹配它们直截了当地说,就像在regex101上突出显示一样。是的,这也是正确的。但是它不能在所有的regEx解释器(PHP)上工作我必须改变两个点。无论如何,我浪费了太多的时间。非常感谢你对这件事的关注。并不是所有的正则表达式风格都支持无限的lookbehinds。NET是有能力的。PHP不是。JS将随它一起提供。你可以做
(n)(?也是,需要更改一个点。这在Chrome中有效,但原因是我不知道它在regex101上不起作用。@AndreElricoLookbehind还不受所有主要浏览器的支持。regex101上的结果就是我想要的JS风格。然而,当我想从“d”变为“n”时,我必须更改两个点.不确定这是否能按我想象的方式实现。这是一种玩转游戏吗?如果你打算在严肃的环境中实现这一点,你应该知道,到目前为止,只有Chrome支持lookbehind@AndreElrico@revo是的,这更像是一个为了学习而感兴趣的问题。当然,你的解决方案是稳定和有建设性的ehind还不是所有主流浏览器都支持的。regEx101上的结果就是我想要的JS风格。但是当我想从“d”变为“n”时,我必须改变2个点.不确定这是否能按我想象的方式实现。这是一种玩转游戏吗?如果你打算在严肃的环境中实现这一点,你应该知道,到目前为止,只有Chrome支持lookbehind@AndreElrico@revo是的,这更像是一个为了学习而感兴趣的问题。当然,你的解决方案是稳定和建设性的。