正则表达式排除部分文字

时间:2018-07-11 14:52:44

标签: regex

我总是有一个以字母或数字开头的订单号。例如271546.随着订单发货,如果订单上的零件不发货,则会创建子订单,例如271546-1我想做的是创建一个将找到271546,但不包括271546-1顺序的正则表达式。例如它找到-1。如果订单更大,我们可以看到原始订单号的-2,-3,-4变体。我已经搜索了,但是找不到解决方案。例如[-1] $或^([^-1] | -1([^-2] | -2([^-3] | $)| $)| $)。* $

任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:0)

进一步完善以支持带前导字母且不带连字符的订单

^([A-Z]-?)?\d+$将匹配271546,W-100716和Q696157,但不匹配271456-1,W-271456-3或Q696157-2。

有关示例和说明,请参见regex101

根据明确的域更新答案

^([A-Z]-)?\d+$将匹配271546和W-100716,但不匹配271456-1或W-271456-3。如果需要,可以将小写字母添加到字符范围:^([a-zA-Z]-)?\d+$,然后它也将匹配w-100716。

有关示例,请参见regex101

原始答案

假设您只是在匹配订单号,而不是尝试在较大的文本块中找到订单号,则^\w+会起作用。如果订单只是数字,则可以使用^\d+

有关示例,请参见regex101

答案 1 :(得分:0)

如果您的值可以以字母开头,后接破折号或仅数字,则可以使用:

^(?:[a-zA-Z]-)?\d+$

说明

  • (?:断言行的开头
  • [a-zA-Z]-非捕获组
    • )?匹配小写或大写字母,后接破折号
  • \d+关闭非捕获组并将其设置为可选
  • $匹配一个或多个数字
  • [a-z]声明行的结尾

请注意,您可以将/i与不区分大小写的const strings = [ "271546", "271456-1", "271456-2", "271456-3", "W-100716" ]; let pattern = /^(?:[a-z]-)?\d+$/i; strings.forEach((s) => { console.log(s + " ==> " + pattern.test(s)); });一起使用。

var app = angular.module('MainApp', ['ngRoute', 'ngMaterial']);

app.run(function ($rootScope, $location, $templateCache, roleAuthorization) {


    $rootScope.$on('$viewContentLoaded', function () {
        $templateCache.removeAll();
    });

    $rootScope.$on('handleEmit', function (event, args) {
        console.log("handling emit");
        $rootScope.role = args.role;
        $rootScope.$broadcast('handleBroadcast', {role: args.role});
        roleAuthorization.setAuthRole(args.role);
    });

    $rootScope.$watch(function() { 
        return $location.path(); 
      },
      function(a){  
        console.log("Here we go: " + $rootScope.userRoleValue);
        if(a !== '/pharmacy/' && a !== '/users/login/' && a !== '/' && roleAuthorization.getAuthRole() === 'pharmacy'){

            window.location.href = '/pharmacy/';
        }
      });


});
app.service('roleAuthorization', function ($rootScope) {
    $rootScope.userRoleValue = '';
    this.getAuthRole = function () {
        return $rootScope.userRoleValue;
    };

    this.setAuthRole = function (x) {
        console.log("auth role set to " + x);
        $rootScope.userRoleValue = x;
        console.log('rootscope var is ' + $rootScope.userRoleValue);

    };

});