Javascript 如何检查字符串中的最后一个字符?
我有以下行选项:Javascript 如何检查字符串中的最后一个字符?,javascript,regex,Javascript,Regex,我有以下行选项: 你可以用 ^(?:[[1-9][0-9]?[hms]:[1-9][0-9]?[hms](?:;(?!$)|$)+$ 或者,更详细一点,因为它包含主模式的重复: ^[][1-9][0-9]?[hms]:[1-9][0-9]?[hms](?:;[[1-9][0-9]?[hms]:[1-9][0-9]?[hms])*$ 请参阅和 详情: ^-字符串的开头 (?:[[1-9][0-9]?[hms]:[1-9][0-9]?[hms](?:;(?!$)|$)+-一次或多次重复 [
- 你可以用
或者,更详细一点,因为它包含主模式的重复:^(?:[[1-9][0-9]?[hms]:[1-9][0-9]?[hms](?:;(?!$)|$)+$
请参阅和 详情:^[][1-9][0-9]?[hms]:[1-9][0-9]?[hms](?:;[[1-9][0-9]?[hms]:[1-9][0-9]?[hms])*$
-字符串的开头^
-一次或多次重复(?:[[1-9][0-9]?[hms]:[1-9][0-9]?[hms](?:;(?!$)|$)+
-一种[]
字符
-非零位[1-9]
-可选数字(如果必须删除[0-9]?
)?
- [hms]
h-
m,
s`或
-冒号:
-非零数字、可选数字和[1-9][0-9]?[hms]
/h
/m
s
-a(?:;(?!$)|$)
代码>不在字符串末尾或字符串末尾
-字符串结束$
模式遵循^[][1-9][0-9]?[hms]:[1-9][0-9]?[hms](?:;[[1-9][0-9]?[hms]:[1-9][0-9]?[hms]*$
方案,使用^(?)*$
构造函数可以轻松地动态构建此模式RegExp
consttext=[”分隔列表的一般模式是
为了避免自我重复并使其可读性或多或少,使用变量、模板字符串和空格是有意义的。这样,您的regexp看起来就像一个语法定义(实际上是什么),而不是一堆符号^ item (delimiter item)* $
let term=`[1-9][0-9][hms]` 让项=`<${term}:${term}` let list=`^${item}(;${item})*$` 让re=newregexp(list.replace(/\s/g')) 控制台日志(re) 测试=`
让我们将问题简化为
,这样就可以使用接受的字符串a=[][[1-9][0-9][hms]:[1-9][0-9][hms]
因此,我们的正则表达式必须以a - ok a;a - ok a; - not ok a;a; - not ok
结尾,这将导致a
现在我们想要接受一个或多个a$
,每个a
之间有a
,其正则表达式是;
将这两个变量组合在一起将产生(a;)*
现在,如果我们用const regex=/^(a;)*a$/;
替换[[1-9][0-9][hms]:[1-9][0-9][hms]
,结果将是a
const regex=/^([[1-9][0-9][hms]:[1-9][0-9][hms];)*[[1-9][0-9][hms]:[1-9][0-9][hms]$/;
您是否也在尝试验证字符串的结构,还是只需要检查它是否以分号结尾?如果您只想检查结尾处是否没有分号,可以使用。
()是的,我也检查了这个字符串too@WiktorStribiżew,是的,这就是我想要实现的。哇,这太酷了。)^[][1-9][0-9]?[hms]:[1-9][0-9]?[hms](?:;[[1-9][0-9]?[hms]:[1-9][0-9]?[hms]。*$/code>()[1-9][0-9]?[hms](?:;(?!$)|$)+$
检查最后一个字符是否不是分号。[^;]$
a - ok a;a - ok a; - not ok a;a; - not ok