我正在使用此正则表达式:/می (\S+)/g
在می
之后得到一个单词,它适用于http://regex101.com/#javascript
中的在线测试,但在使用时它不起作用它在javascript本身。
我使用以下代码:
var optimized= $("#text").val().replace('/می (\S+)/g', 'می$1');
例如,这个字符串:
من می توانم همه را بکشم، ولی تو نمی توانی همه را می کشی
应该替换为这个:
من میتوانم همه را بکشم، ولی تو نمیتوانی همه را میکشی
它适用于在线正则表达式网站,但不适用于我的代码...... :(
答案 0 :(得分:3)
您应该删除正则表达式周围的引号('
):
var optimized= $("#text").val().replace(/می (\S+)/g, 'می$1');
这是一个工作小提琴:http://jsfiddle.net/4Fm6g/
答案 1 :(得分:1)
我测试了这段代码,但它确实有效;
var input = "من می توانم همه را بکشم، ولی تو نمی توانی همه را می کشی";
var optimized= input.replace(/می (\S+)/g, 'می$1');
console.log(optimized);
唯一的区别是声明正则表达式的方式。
您写道:
.replace('/می (\S+)/g', 'می$1');
您需要删除斜杠(并使用正则表达式构造函数)或引号
修改:使用jquery运行示例:http://jsfiddle.net/ghusse/LSpwU/
<textarea id="text">من می توانم همه را بکشم، ولی تو نمی توانی همه را می کشی</textarea>
<textarea id="optimized"></textarea>
<p><button id="go">Go</button></p>
使用Javascript:
var input = $("#text"),
output = $("#optimized");
$("#go").click(function(){
output.val(input.val().replace(/می (\S+)/g, 'می$1'));
});
输入:
منمیتوانمهمهرابکشم,ولیتونمیتوانیهمهرامیکشی
输出:
منمیتوانمهمهرابکشم,ولیتونمیتوانیهمهرامیکشی
答案 2 :(得分:0)
我怀疑您遇到了问题,因为您的Javascript文件是使用不同的字符编码提供的。
如果您的HTML是text/html; charset=UTF-8
,那么您的Javascript文件应编码为application/javascript; charset=UTF-8
。在Apache服务器上,您可以将此行添加为.htaccess文件,将所有Javascript文件作为UTF-8提供:
AddCharset UTF-8 .js
答案 3 :(得分:0)
还要确保在正则表达式上启用多行标记,因为您似乎要对大块文本运行它。这是你如何做到的:
/می (\S+)/gi.test(X);