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