Javascript 如何在JS中检查字符串是否与正则表达式匹配?
Javascript 如何在JS中检查字符串是否与正则表达式匹配?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,$('.btn集')。在('click',function()上{ var$this=$(this); $this.button('load'); 函数getMatches(字符串、正则表达式、索引){ index | |(index=1);//默认为第一个捕获组 var匹配=[]; var匹配; while(match=regex.exec(字符串)){ matches.push(匹配[索引]); } 返回比赛; } //例如: var myString=“.data label valida
$('.btn集')。在('click',function()上{
var$this=$(this);
$this.button('load');
函数getMatches(字符串、正则表达式、索引){
index | |(index=1);//默认为第一个捕获组
var匹配=[];
var匹配;
while(match=regex.exec(字符串)){
matches.push(匹配[索引]);
}
返回比赛;
}
//例如:
var myString=“.data label validation”;
var myRegEx=“(开始|停止)-(ed | f | m | s | su | t | th | w | wd)-([1-9]| 1[0-2])|([0-5][0-9])(?我)(上午|下午)-(cst |est | mst |pst)”;
//获取包含每个匹配的第一个捕获组的数组
var matches=getMatches(myString,myRegEx,1);
//日志结果
document.write(matches.length+'找到匹配项:'+JSON.stringify(匹配项))
console.log(匹配项);
setTimeout(函数(){
$this.button('reset');
},8000);
小时
:
闵
是
区
设置
{{range.Projects}}
项目:{{.Name}
启用计算API
服务帐户密钥
其他错误
{{range.Instances}}
{{.Name}
{{.Type | baseUrl}}
{{.Zone | baseUrl}}
{{模板“startup.html”。}
{{模板“startup.html”。}
$0.00
{{end}
{{end}
在js中,正则表达式可以用/pattern/flags
作为一个literal输入(有关js正则表达式的大量帮助,请参阅和)
然后,当您执行正则表达式exec()时,它将为您提供一个包含匹配项和捕获组的简单数组
以下是我认为您试图实现的目标的一个版本。我从您的代码片段中删除了许多绒毛,以进入问题的核心:正则表达式匹配。我还创建了一些与正则表达式匹配(或不匹配)的字符串
函数getMatches(字符串、正则表达式、索引){
如果(索引===未定义)
指数=1;
var matches=[],match;
while((match=regex.exec(string))!==null)
if(match.length>索引)
matches.push(匹配[索引]);
复赛
}
//例如:
var myStrings=[//要测试的字符串数组
“stop-su-5_25pm-cst”,
“请叫诺玛奇”,
“start-f-1_05am-mst”,
“启动-ed-10_53pm-pst”,
“start-th-3_03am-pst”,
];
//这是一个不区分大小写的全局正则表达式。请注意,您需要将g放在这里,以便能够循环匹配。
var myRegEx=/(开始|停止)-(ed | f | m | s | su | t | th | w | wd)-(1-9]| 1[0-2]|([0-5][0-9])(上午|下午)-(cst |东部时间| mst |太平洋标准时间)/ig;
//记录每个字符串的函数结果
for(让mystring的字符串){
var matches=getMatches(字符串,myRegEx,1);
log(字符串“:”,匹配项);
}您的代码中有很多错误。 首先,您的正则表达式字符串不是有效的js正则表达式字符串。这不适用于js:
“(?i)”
您应该在js中模拟lookbehind断言或将字符串发送到后端进行验证。并且不要在多行上拆分字符串,只保留一行即可
然后,您试图通过将元素的类名传递给您的函数来从元素中获取数据。这也是一个禁忌。首先获取元素,然后提取数据。如下所示:var testString=$('#table').attr('data-table');
那么,你想在这里做什么?this.button('loading');
在JS中没有这样的方法。我猜你试图向按钮添加加载状态。你可以这样做:
this.text('loading');
然后,您没有正确设置regexp对象。请使用构造函数,如下所示:
regex=newregexp(regex);
简单一点:
var testRegexString = '/(start|stop)-(ed|f|m|s|su|t|th|w|wd)-([1-9]|1[0-2])_([0-5] [0-9])(am|pm)-(cst|est|mst|pst)/ig';
var testString = $('#table').attr('data-table');
function validateString(string, regex) {
regex = new RegExp(regex);
var matchesArray = regex.exec(string);
var matchesCount = matchesArray.length - 1;
return matchesArray ? matchesCount + ' Matches found' : 'No matches found';
}
$('#btn1').on('click', function(){
$(this).text('loading');
var validationResult = validateString(testString, testRegexString);
$('#message').text(validationResult);
$(this).text('Validate Again!');
});
这里的工作代码段您是否可以添加一个小的工作代码段以反映您的问题?好的,当然可以@AbdeslemCharif@AbdeslemCharif嘿,我已经上传到代码段了,你能检查一下吗谢谢你的回答!!如果我有api url,该怎么办。如何传递它?对不起,我真的不明白。你想用那个api url做什么?对不起,我有现在使用localhost api很快就会得到服务器api url。本地主机api url localhost:8080/setlabel/project/instance/oldvalue/newvalueOk,但它与正则表达式有什么关系?您需要对照正则表达式检查url吗?还是从api中获取要测试的字符串?$.ajax({type:“get”,dataType:“json”,url:“path/to/your/API/”,成功:函数saveData(data){savedData=data;//your regex here},错误:函数(error){console.log(error);});@PvDev您能提供一个api示例吗?您是否从api调用的响应体中获取regex字符串?我现在正在使用localhost api,很快将获取服务器api url。本地主机api url