Javascript JS正则表达式只允许数字、分号和连字符

Javascript JS正则表达式只允许数字、分号和连字符,javascript,regex,Javascript,Regex,我正在构建一个只接受以下格式字符串的应用程序: 12345(仅一个数字) 12345;23456(两个或多个数字之间用;) 12345-12367(由a-分隔的数字范围) java脚本regex应该只允许上述格式&不应该接受任何其他格式或符号。有人能为这个提供正则表达式吗?这是您需要的正则表达式:/^\d+(;\d+*?-\d+)$/ (;\d+)*将检查以“;”分隔的多个数字 -\d+将检查范围这是您需要的正则表达式:/^\d+(;\d+*|-\d+)?$/ (;\d+)*将检查以“;”分隔的

我正在构建一个只接受以下格式字符串的应用程序:

  • 12345(仅一个数字)
  • 12345;23456(两个或多个数字之间用;)
  • 12345-12367(由a-分隔的数字范围)

  • java脚本regex应该只允许上述格式&不应该接受任何其他格式或符号。有人能为这个提供正则表达式吗?

    这是您需要的正则表达式:
    /^\d+(;\d+*?-\d+)$/

    (;\d+)*
    将检查以“;”分隔的多个数字


    -\d+
    将检查范围

    这是您需要的正则表达式:
    /^\d+(;\d+*|-\d+)?$/

    (;\d+)*
    将检查以“;”分隔的多个数字

    -\d+
    将检查范围

    尝试

    ^[0-9]+([;-][0-9]+)?$
    
    这应该行得通

    [0-9]+
    匹配一个或多个数字 [;-]匹配一个
    或a
    -

    (…)?
    是可选的匹配项

    ^
    锚定字符串的开头和
    $
    锚定字符串的结尾

    ^[0-9]+([;-][0-9]+)?$
    
    这应该行得通

    [0-9]+
    匹配一个或多个数字 [;-]匹配一个
    或a
    -

    (…)?
    是可选的匹配项


    ^
    锚定字符串的开头,
    $
    锚定字符串的结尾

    假设每次要查找的数字部分都是5位数字,以下内容应该与您想要的匹配

    [0-9]{5}((;|-)[0-9]{5}){0,1}
    
    如果需要不同的长度,可以使用另一个固定长度或范围更新{5},例如{3,5}来表示3到5位的字符串。如果您想在列出的speperator中捕获两个以上的数字,可以使用

    [0-9]{5}((;|-)[0-9]{5})*
    

    假设您要查找的数字部分每次为5位数字,则以下内容应与您想要的内容相匹配

    [0-9]{5}((;|-)[0-9]{5}){0,1}
    
    如果需要不同的长度,可以使用另一个固定长度或范围更新{5},例如{3,5}来表示3到5位的字符串。如果您想在列出的speperator中捕获两个以上的数字,可以使用

    [0-9]{5}((;|-)[0-9]{5})*
    

    ^[0-9-;]{0,50}$

    0-9仅接受数字

    -仅允许-和


    {0,50}只允许50个字符

    ^[0-9-;]{0,50}$

    0-9仅接受数字

    -仅允许-和


    {0,50}只允许50个字符

    您将无法使用正则表达式来保证最后一个字符是有效的范围。如果您使用分号作为字段之间的分隔符,可能您应该
    拆分字符串
    并检查每个元素是否匹配其他两个条件。前两个条件很简单:
    /^(\d+);\d+?$/
    @Michael我想使用javascript检查两个数字之间是否有连字符。我还有其他检查来确定它是否是有效的范围。@Packwolf那么已经发布的ansers中的任何一个都可以完成这项工作。您将无法使用正则表达式来保证最后一个是有效的范围。如果您使用分号作为字段之间的分隔符,也许您应该
    拆分
    字符串并检查每个元素是否与其他两个条件匹配。前两个条件很简单:
    /^(\d+)(;\d+)?$/
    @Michael我想使用javascript检查两个数字之间的连字符。我还有其他检查,看看它是否是一个有效的范围。@Packwolf,那么已经发布的ansers中的任何一个都可以完成这项工作。如果它是字符类中的第一个或最后一个字符,我想不需要对连字符进行转义。此处相同
    =]
    只是注释,因为有些人更喜欢代码“cleaner”(不必要的转义较少)。如果是字符类中的第一个或最后一个字符,则无需转义连字符。此处相同
    =]
    只是注释,因为有些人更喜欢代码“更干净”(不必要的转义更少)。