Javascript regex修改单词末尾特定大小写的字符
我正在做一个翻译项目,我需要在结尾处修改一些字符,例如,如果用户键入以下单词: 键入的单词:“依兰宁”=>目标单词(我想要的):“依兰” “苏韵宁”=>“苏韵” “加里宁”=>“加里宁” “蜡染”=>“蜡染” 等等等等 但我有一个问题:我不想修改“nin”字符,如果它们位于单词的中间或开头,例如: “基宁丹*”=>**“基宁丹” “sininteki”=>“sininteki” “nin”=>“nin” “忍者”=>“忍者” 等等等等 我的意思是每一个“xxxnin”到“xxxNG” “xxxninxxx”至“xxxninxxx”(无修改) “nin”至“nin”(无修改) 我试图非常清楚地解释我的问题,我希望你能理解Javascript regex修改单词末尾特定大小写的字符,javascript,regex,Javascript,Regex,我正在做一个翻译项目,我需要在结尾处修改一些字符,例如,如果用户键入以下单词: 键入的单词:“依兰宁”=>目标单词(我想要的):“依兰” “苏韵宁”=>“苏韵” “加里宁”=>“加里宁” “蜡染”=>“蜡染” 等等等等 但我有一个问题:我不想修改“nin”字符,如果它们位于单词的中间或开头,例如: “基宁丹*”=>**“基宁丹” “sininteki”=>“sininteki” “nin”=>“nin” “忍者”=>“忍者” 等等等等 我的意思是每一个“xxxnin”到“xxxNG” “xxxn
$(文档).ready(函数(){
$(“#tau 1”).keyup(函数(事件){
var text2=$(this.val();
text2=text2.替换(/([abcçdefgğhıijklmnoöprsştuüvyzABCİDEFGHIÖPRSTUÜVYZ])nin$/g,$1NG');
$(“#tau 1”).val(text2);
});
});代码>
您喜欢这项工作吗
text.replace(/([\s\S])nin\b(?![çğıöşüÇİÖÜ])/, '$1NG');
\b
匹配单词边界位置,如空格、标点符号或字符串的开头/结尾
?![çÍöşüİÖÜ]
负前瞻,如果找到任何指定字符,则指定不匹配
var stringArr=['suyunin','kalinin','batinin','kinindan','sininteki','nin','ninkisi','xxxninxxx','nin','kalininü];
var generated=document.getElementById('generated');
对于(变量i=0;i
#生成{
颜色:红色;
}
数组列表:
['suyunin','kalinin','batinin','kinindan','sininteki','nin','ninkisi','xxxnin','xxxninxxx','nin'];
生成的列表:
您需要跟踪两个事件:keyup
(跟踪文本输入继续)和blur
(检查字符串输入结束)。然后,使用两种不同的替换:
$(文档).ready(函数(){
$(“#ta_1”)。打开(“键控模糊”,函数(事件){
var text2=$(this.val();
如果(event.type!==“blur”){//仅在键控时触发
text2=text2.替换(/([a-zA-ZğğğğĜĜĜĜĜĜĜĜĜĜĜĜ)nin\b(?[a-zA-ZğĜĜĜĜĜ;
}
否则{//我们有模糊
text2=text2.替换(/([a-zA-ZğğğşğğğİğğğğĜĜĜĜ28;
}
$(“#tau 1”).val(text2);
})
});代码>
这应该行得通
(?!^nin)(nin$)
JS代码
var re=/(?!^nin)(nin$)/gm;
var str='suyunin\nabcninshs\nning\nning\nkinindan*\nsininteki\nnin\nnininkisi';
var subst='NG';
var结果=str.replace(re,subst);
document.writeln(结果)
试试这个
(\w)(nin)\b
$(文档).ready(函数(){
//功能前设置
var typingTimer;//计时器标识符
var doneTypingInterval=1000;//以毫秒为单位的时间,例如1秒
var$input=$(“#myInput”);
//用户正在“完成键入”,请执行某些操作
函数doneTyping(){
//做点什么
}
$(“#tau 1”).keyup(函数(事件){
var text2=$(this.val();
变量re=/(\w)(nin)([^a-zA-Z])/g;
var subst='$1NG$3';
text2=text2.替换(re,subst);
var re=/(\w)(NG)(\w)/;
var subst='$1nin$3';
text2=text2.替换(re,subst);
$(“#tau 1”).val(text2);
clearTimeout(键入计时器);
typingTimer=setTimeout(doneTyping,doneTypingInterval);
});
$(“#ta_1”).keydown(函数(事件){
clearTimeout(键入计时器);
});
函数doneTyping(){
var text2=$(“#ta_1”).val();
变量re=/(\w)(nin)\b/g;
变量subst=“$1NG”;
text2=text2.替换(re,subst);
$(“#tau 1”).val(text2);
}
});代码>
我尝试了stackoverflows代码片段工具,但不起作用:/i相信您不需要/g(全局)来实现这一点:)谢谢,我已经删除了/g
并更新了公式。现在试试。@timolawl我在stackoverflows代码段工具上测试过,但它不起作用:/你能给我发一个JSFIDLE示例吗?:/请注意,\b
将在Kalininü
()中找到nin
。无论如何,正则表达式(?!^nin)(nin\b)
可以以更简洁的方式编写。像([\s\s])(nin\b)
是的,它正在工作,但我在javascript代码上替换它时遇到了问题,你能给我发一个JSFIDLE吗??:/添加了一个JS
code、jsiddle Demo
和Ideone Demo
我的意思是我不知道如何在我的代码中插入可能是我在不处理代码时犯了一些错误://text2=text2。替换(/(?!^nin)(nin$)/,'NG')代码>恐怕我不知道jquery
。因此无法帮助您处理keyup
event@pinugKimDANN的输出是什么?“金丹”如果它在中间,就不应该修改它:/@ Piug ChestUpdate,必须键入输入或空格键来替换Word.Uoup用户必须按Enter或SIR,SIR,这对我不好:/如果nin
后面加标点,ddnin.
,这就行不通了。ddnin.
。非常感谢您,先生,谢谢您的关注和您的信息,先生,这对我来说非常重要:)不仅如此,还必须再丢失一个字符/焦点才能触发替换。由于文本输入是实时的,因此您没有任何机会使用\b
或任何东西跟踪“整个单词”。那是w