Convert a string into a regular expression
我正在使用一个非常精细的JavaScript库,名为"数组查询",由Jacob Wright在对象数组中进行搜索。
一种方法是regex(),其中正则表达式可以包括在这样的括号中:regex(/[^\w\s]/)。如果我像刚才展示的那样对表达式进行硬编码,它就可以正常工作。如果我先在变量中放入相同的表达式,它将不起作用,如下所示:
1 2
| var reg ="/[^\w\s]/";
regex(reg); |
有人告诉我
You are putting quotes around your regex, making it a string. Remove the quotes.
因此
1 2
| var reg = /[^\w\s]/;
regex(reg); |
工作良好。
问题是我需要接受来自文本框的用户输入作为正则表达式的一部分。例如,如果用户键入字母z,则需要将其更改为/z/。即使我输入/z/,返回的textbox.value与var reg ="/z/"有相同的问题。如果我对var reg = /z/; regex(reg);进行硬编码,它就可以正常工作。
如何将"z"的输入文本框值转换成var reg = z;的形式?非常感谢您的帮助或想法,希望这不会太令人困惑。
- 这里:stackoverflow.com/questions/874709/…
- 如前所述,请查看Mzedeler发布的链接。我还建议阅读一些有关javascript中正则表达式的文档:developer.mozilla.org/en-us/docs/web/javascript/guide/…。
你应该做
1
| var regex = new RegExp('your regex string'); |
基本上你可以想到
1
| var regex = /pattern/modifiers; |
作为
1
| var regex = new RegExp(pattern,modifiers); |
在MDN或W3Schools上阅读更多关于它的信息
1
| var reg = new RegExp("string"); |
你可以这样做:
1 2 3 4 5
| var string = $('#input_id').val();
string = string.replace('/', '');
var regexpPattern = '/'+string+'/';
regex(regexpPattern); |
- regex需要regexp对象,而不是字符串。
- 那是非常错误的。"/foo/"是一个字符串,而/foo/是一个regex文本。手术室甚至提到了这个问题,你读过吗?
- 我没有包括任何双引号。我刚刚用通过输入框捕获的文本来具体化斜线。你仔细阅读我的代码了吗?
- 可以将其更改为regexp对象,如:var reg=new regexp("/"+string+"/");
- 不管你用单引号还是双引号。两者都表示一个字符串。如果你喜欢的话,我也可以写一本书。是的,这里需要传递值到RegExp,这就是实际的解决方案!但是包括斜线是错误的。正确的解决方案是regex(new RegExp(string))。否则,regex将只匹配字面上包含/的值。
- @费利克斯克林,谢谢你,伙计。
- 真的!谢谢你们这么快和伟大的答案。它起作用了!!!!ValeReg=new ReGEXP(字符串);我可以再次呼吸。摩根德耶
- @斯帕瓦尔也许你想写点像这样的东西。