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=[”分隔列表的一般模式是

    ^ item (delimiter item)* $
    
    为了避免自我重复并使其可读性或多或少,使用变量、模板字符串和空格是有意义的。这样,您的regexp看起来就像一个语法定义(实际上是什么),而不是一堆符号

    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]$/;


    您是否也在尝试验证字符串的结构,还是只需要检查它是否以分号结尾?如果您只想检查结尾处是否没有分号,可以使用。
    ^[][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](?:;(?!$)|$)+$
    ()是的,我也检查了这个字符串too@WiktorStribiżew,是的,这就是我想要实现的。哇,这太酷了。)
    [^;]$
    检查最后一个字符是否不是分号。
    a - ok
    a;a - ok
    a; - not ok
    a;a; - not ok