Javascript Regex检查字符串是否包含不属于的单词
Javascript Regex Check if string has word that does not belong
我有一个字符串,每一行都有时间(格式为HH:MM)。我想创建一个JS函数来检查是否有不属于的时间。它应该简单地返回true
或false
。
正确字符串示例:var s = "5:45'n07:00'n13:00'n17:00";
5:45
07:00
13:00
下午17:00
错误字符串示例:var s = "5:45'n07:00'n55:00'n17:00";
5:45
07:00
55:00//此处的日期不正确,应返回false
下午17:00
我的正则表达式经验很少。在Scriptular上玩游戏时,我创建了这个表达式来检测匹配的时间:/^[0-2]?[0-9]':[0-5][0-9]$/m
。然而,这还不够。
那么,我如何使用如上所述的字符串s
来实现这一点呢?
function checkIfStringConforms(s)
{
var all_good = [some magic with regex here]
return all_good;
}
PS:我在谷歌上搜索了一下SO的答案。我的正则表达式技能是…嗯。
您的正则表达式还可以,但它也会匹配29:00
,因此需要进行一些改进。然后,找到不匹配的总是比找到匹配的要困难一些。您可以尝试从字符串中删除所有匹配项,然后查看它是否为空(除了空白):
result = s.replace(/^(?:2[0-3]|[01]?[0-9]):[0-5][0-9]$/mg, "");
如果result
在此之后为空,则字符串中没有非法时间。
这可以在不使用任何正则表达式的情况下完成。只需在新行上拆分,看看每个日期是否都符合您的格式。为此,我们可以使用Array.every
function checkIfStringConforms(s) {
return s.split("'n").every(function(str){
var arr = str.split(":");
return (arr[0] < 24 && arr[0] > -1) && arr[1] < (60 && arr[1] > -1)
});
}
/(((2[^0-3]|[3-9].):..)|(..?:[^0-5].))('n|$)/
如果您的s
变量至少有一个无效时间,Regexp将返回true
。请在使用前仔细检查——您的问题范围很广,限制还没有完全定义。Regex假设你每行都有类似x:xx或xx:xx的东西(x是一个数字)——我不确定这个假设是否涵盖了你的所有数据。
- 如何获取不属于我项目的上一页的URL
- 将不属于表单的HTML页面中的值传递给php页面
- Javascript Regex检查字符串是否包含不属于的单词
- 可以对不属于't writive be shadowed
- 匹配 [单词] 但不匹配 [单词] 撇号正则表达式
- 当方法不属于父级的原型时,有没有办法从子级调用父级的方法
- js 正则表达式不匹配单词边界
- 自动对焦在不属于任何表单元素的输入标签中不起作用
- Jquery 解析不属于字符串的句子/行中的整数
- 只替换整个单词,而不是单词
- 无法在“导航器”上执行“注册协议处理程序”:方案“消息”不属于方案白名单
- 在不更改单词顺序的情况下反转字符串中的每个单词
- 比较2个字符串并返回不属于't相等
- 我怎样才能使它计算字符而不是单词
- 如何在不拆分单词的情况下将字符限制设置为100
- 为什么下面的JavaScript测试显示元素不属于数组
- 删除文本框上的空格,但不删除单词之间的空格
- Javascript正则表达式,不包括单词
- 通过不属于图像的链接过滤链接
- Javascript将单词(不是单词的一部分)替换为西里尔字母