首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reg Ex匹配失败

Reg Ex匹配失败
EN

Stack Overflow用户
提问于 2012-08-28 21:21:18
回答 3查看 66关注 0票数 1

我正在尝试匹配以下格式:<任意数量的a-z A-Z字符>

使用"^<\w*>$";

代码是:

代码语言:javascript
复制
var predefinedListRegEx = "^<\w*>$";
var dataFill = "<aaaa>"; 
var predefined_List = dataFill.match(predefinedListRegEx);

if (predefined_List != null) {
        //MATCHES THE CONDITION
    }

似乎不能让它工作..我哪里错了?

同样,一旦我得到匹配的字符串,我想减去<>输出的内容,并用它来引用一个变量。

代码语言:javascript
复制
var vacba = 0 

e.g

然后是vacba = 10;

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-28 21:23:16

这里的正则表达式是一个字符串,而不是RegExp。尝试:

代码语言:javascript
复制
var predefinedListRegEx = /^<\w*>$/;

如果出于某种原因需要使用由match转换为正则表达式的字符串,则必须转义斜杠:

代码语言:javascript
复制
var predefinedListRegEx = "^<\\w*>$";

通过更多请求响应您的编辑

使用带括号的匹配组:

代码语言:javascript
复制
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;

票数 4
EN

Stack Overflow用户

发布于 2012-08-28 21:27:17

您可以使用string作为regexp数据的容器。当您使用in match时,它将被隐式地转换为真正的regexp,但您需要正确地引用在字符串文字中具有特殊含义的符号-在本例中为\

代码语言:javascript
复制
var predefinedListRegEx = "^<\\w*>$";

此外,每次调用时的隐式转换都会导致性能下降,因此您真的应该使用真正的构造函数,正如apsiller所提到的:

代码语言:javascript
复制
var predefinedListRegEx = /^<\w*>$/;
票数 3
EN

Stack Overflow用户

发布于 2012-08-28 21:35:07

使用以下正则表达式:

代码语言:javascript
复制
result = dataFill.match(/<(\w*)>/);

这将返回匹配和捕获组的内容作为第二个值。

现在,您可以使用[]表示法将其用作变量名,如下所示:

代码语言:javascript
复制
window[result[1]] = "whatever";

这将创建一个全局变量。当然,最好使用您自己的名称空间,而不是全局对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12160188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档