我正在尝试匹配以下格式:<任意数量的a-z A-Z字符>
使用"^<\w*>$";
代码是:
var predefinedListRegEx = "^<\w*>$";
var dataFill = "<aaaa>";
var predefined_List = dataFill.match(predefinedListRegEx);
if (predefined_List != null) {
//MATCHES THE CONDITION
}似乎不能让它工作..我哪里错了?
同样,一旦我得到匹配的字符串,我想减去<>输出的内容,并用它来引用一个变量。
var vacba = 0 e.g
然后是vacba = 10;
发布于 2012-08-28 21:23:16
这里的正则表达式是一个字符串,而不是RegExp。尝试:
var predefinedListRegEx = /^<\w*>$/;如果出于某种原因需要使用由match转换为正则表达式的字符串,则必须转义斜杠:
var predefinedListRegEx = "^<\\w*>$";通过更多请求响应您的编辑
使用带括号的匹配组:
var predefinedListRegEx = /^<(\w*)>$/;
var dataFill = "<aaaa>";
var predefined_List = dataFill.match(predefinedListRegEx);这会将predefinedListRegEx设置为一个类似于:["<aaaa>", "aaaa"]的数组。
如果您想使用predefined_List[1]中的字符串作为变量名(例如,执行aaaa = 10),您可能不需要使用eval。如果变量是全局变量,则可以简单地使用window[predefined_List[1]],因为所有全局变量都是window对象的属性。如果它不是全局的(或者如果您只想成为一个整洁的JavaScript程序员,而不是过度使用全局名称空间),那么最好只在保存您的值的对象上使用引用属性,比如variablesNamedInMyRegexes[predefined_List[1]] = 10;。
发布于 2012-08-28 21:27:17
您可以使用string作为regexp数据的容器。当您使用in match时,它将被隐式地转换为真正的regexp,但您需要正确地引用在字符串文字中具有特殊含义的符号-在本例中为\。
var predefinedListRegEx = "^<\\w*>$";此外,每次调用时的隐式转换都会导致性能下降,因此您真的应该使用真正的构造函数,正如apsiller所提到的:
var predefinedListRegEx = /^<\w*>$/;发布于 2012-08-28 21:35:07
使用以下正则表达式:
result = dataFill.match(/<(\w*)>/);这将返回匹配和捕获组的内容作为第二个值。
现在,您可以使用[]表示法将其用作变量名,如下所示:
window[result[1]] = "whatever";这将创建一个全局变量。当然,最好使用您自己的名称空间,而不是全局对象。
https://stackoverflow.com/questions/12160188
复制相似问题