在使用变量创建RegExp对象时添加特殊字符
Adding special character when creating a RegExp object with a variable
我仍然是一个新手,我正在创建一个小函数,当在文本框中输入对象时,它可以拾取对象并将它们添加到库存中。
我有一个文本框(id="commandBox")和一个启动函数'pickUp()'的按钮。该函数本身工作良好,但当我使用数组索引创建RegExp对象时,我不知道如何正确添加字边界('b)。目前,当涉及的数组索引是'pen'时,它也匹配'PENcil'和'sharPENer '中的'pen'。如何正确添加特殊字符?
我已经**了这条线。
objectList = new Array("pencil","pen","rubber","sharpener");
inventory = new Array();
function pickUp(){
var entry = document.getElementById("commandBox").value;
var resultBox = document.getElementById("result");
for(i=0;i<objectList.length;i++){
**objectSearch = new RegExp(objectList[i],"g");**
if(inventory.indexOf(objectList[i])!=-1 && objectSearch.test(entry)==true ){
resultBox.innerHTML = resultBox.innerHTML + "<br />You have already picked up the " + objectList[i];
return;
}else{
if(objectSearch.test(entry)==true){
resultBox.innerHTML = resultBox.innerHTML + "<br />You picked up a " + objectList[i];
inventory.push(objectList[i]);
}
}
}
}
new RegExp("''b" + objectList[i] + "''b")
应该可以工作(您不需要g
标志,因为您只是test
,而不是遍历所有结果)。
另一方面,为什么不
if (objectList.indexOf(entry) > -1) {
if (inventory.indexOf(entry) > -1) {
...
} else {
...
}
}
?如果您需要处理一个条目中的多个条目,只需将该条目拆分为单个单词:
entries = entry.split(" ")
,然后循环遍历数组:
for (var entry in entries) {
if (objectList.indexOf(entry) > -1) {
if (inventory.indexOf(entry) > -1) {
...
} else {
...
}
}
}
如果我是你,我会尽量避免使用动态创建的正则表达式,并尝试去一些更简单的。一种方法是编写一个简单的静态正则表达式,遍历每个单词,然后使用普通字符串比较检查目录。
var reg = /'w+/g;
var result = null;
while(result = reg.exec(entry)){
var word = result[0].toLowerCase();
for(var i=0; i<objectList.length; i++){
if( objectList[i].toLowerCase() === word){
/*Found it!*/
}
}
}
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Meteor-将选定窗体中的对象添加到集合中
- 在play2框架中向json对象添加下拉列表项
- 如何在javascript上向数组的对象添加新元素
- JSON到对象数组,并向每个对象添加项
- 如何将一个对象添加到每个对象数组中
- 向Angular作用域对象添加对象数组——TypeError
- CoffeeScript将对象添加到数组中
- 如何从Addon SDK向选项卡对象添加进度侦听器
- 使用ja将对象添加到HTML画布中
- 向通过ReST JSON调用生成的Angular Javascript对象添加方法
- 将新对象添加到本地存储
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- 使用游标循环将JS对象添加到数组中
- 向调用全局javascript函数的对象添加处理程序
- 将另一个文件中的对象添加到单独文件中的阵列中
- 将对象添加到数组中
- 为新对象添加函数,将对象添加到数组中.理解困难'这'关键字
- sequelize为找到的对象添加值
- 向对象添加新方法和值,同时避免重复