将字符串添加到不区分大小写的 RegExp 中替换的事物开始
Add a string to the thing begin replaced in a case insensitive RegExp.
很抱歉这个问题表述得不好,我希望我的文本和代码能更好地理解我想要完成的任务。
我正在为Android应用程序编写一些java脚本。我的网络视图的JavaScript RegExp有一些问题。有人可以帮我吗?
我想做什么的基本伪代码。
/*
* Replace all instances of a letter (case insensitive) with itself + add some string.
* Example, search for all 'a' (case insensitive) and replace it with 'a
* someString' if it was lowercase. If it was a capital than replace it with 'A someString'
*/
这是我的代码(对不起,它都在一个字符串中,必须用于网络视图)。
"var alpha = 'abcdefghijklmnopqrstuvwxyz'.split('');" +
"for (i = 0; i < 5; i++) " +
"{if(window.HtmlViewer.isActive(i))" +
"{var re = new RegExp( '"('" + alpha[i] + '"(?![^<>]*>))'", 'gi' );" +
"document.body.innerHTML = document.body.innerHTML.replace(re, " +
"'<font color='"'+colorsArray[i]+''">'+alpha[i]+'</font>');}" +
"else{break;}" +
"};" +
在第一个循环中,它将所有"a"和"A"替换为"a"并为其提供颜色。我想要的是让它只用"a"替换"a",用只有"A"替换"A",即唯一改变的是颜色"font color="'+colorsArray[i])。知道我将如何做到这一点吗?我可以以某种方式使用 var re 来获取它是大写还是小写,然后做这样的事情:
"'<font color='"'+colorsArray[i]+''">'+re.getString()+'</font>');}" +
我现在的解决方案是制作两个 for 循环并删除"i"(不区分大小写)修饰符。在第一个循环中,我处理小写,在第二个循环中,我处理大写。但这似乎是双重工作,因为"a"和"A"的颜色是相同的。一定有比这更好的方法吗?
首先,您不必使用循环来匹配每个字母,您可以使用带有"i"标志的正则表达式模式 [a-z] 而不是"alpha[i]"。我在这里设置了一个应该适用于您的案例的示例:http://jsfiddle.net/yy6we65a/3/
var re = /([a-z](?![^<>]*>))/gi;
var colors = ["red","blue","green","yellow","orange"];
var i =0;
function encapsulate(src){
var ret = '<font color="'+colors[i]+'">'+src+'</font>';
i++;
if( i == 5) i = 0;
return ret;
}
var orig = document.getElementById("container").innerHTML;
var target = document.getElementById("target");
target.innerHTML = orig.replace(re,encapsulate);
我没有你的颜色阵列,所以我用了我自己的一个,但当然你可以用你的。代码中有注释来解释每个部分。
相关文章:
- Javascript RegExp替换.如何携带未知字符进行替换
- RegExp-替换搜索时的“html”标记并突出显示
- 使用Javascript Regexp替换基于变量的字符串部分
- RegExp替换不替换为模式
- Javascript RegExp 替换以获取时间
- JavaScript RegExp替换文本
- Javascript-RegExp-替换未被字母包围的字符
- 是否有任何regexp替换
- Javascript Regexp:替换大括号
- 使用regexp替换字符串末尾的换行符
- RegExp替换JavaScript中的子字符串
- 仅用RegExp替换字符串中的外部标签
- RegExp替换每隔一秒的星号
- Javascript regexp替换用引号括起来的东西
- Javascript的regexp替换,多行
- Regexp替换输入字段中的符号
- Javascript用RegExp替换所有数字
- 我如何做一个jQuery模板内的RegExp替换
- Firefox在JavaScript中使用regexp替换字符串时出现错误
- JS Regexp替换"illegal"字符来创建PHP函数名