yzt
2023-05-26 de4278af2fd46705a40bac58ec01122db6b7f3d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
define(["./_base/kernel", "./_base/lang"], function(dojo, lang){
 
// module:
//      dojo/regexp
 
var regexp = {
    // summary:
    //      Regular expressions and Builder resources
};
lang.setObject("dojo.regexp", regexp);
 
regexp.escapeString = function(/*String*/str, /*String?*/except){
    // summary:
    //      Adds escape sequences for special characters in regular expressions
    // except:
    //      a String with special characters to be left unescaped
 
    return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+\-^])/g, function(ch){
        if(except && except.indexOf(ch) != -1){
            return ch;
        }
        return "\\" + ch;
    }); // String
};
 
regexp.buildGroupRE = function(/*Object|Array*/arr, /*Function*/re, /*Boolean?*/nonCapture){
    // summary:
    //      Builds a regular expression that groups subexpressions
    // description:
    //      A utility function used by some of the RE generators. The
    //      subexpressions are constructed by the function, re, in the second
    //      parameter.  re builds one subexpression for each elem in the array
    //      a, in the first parameter. Returns a string for a regular
    //      expression that groups all the subexpressions.
    // arr:
    //      A single value or an array of values.
    // re:
    //      A function. Takes one parameter and converts it to a regular
    //      expression.
    // nonCapture:
    //      If true, uses non-capturing match, otherwise matches are retained
    //      by regular expression. Defaults to false
 
    // case 1: a is a single value.
    if(!(arr instanceof Array)){
        return re(arr); // String
    }
 
    // case 2: a is an array
    var b = [];
    for(var i = 0; i < arr.length; i++){
        // convert each elem to a RE
        b.push(re(arr[i]));
    }
 
     // join the REs as alternatives in a RE group.
    return regexp.group(b.join("|"), nonCapture); // String
};
 
regexp.group = function(/*String*/expression, /*Boolean?*/nonCapture){
    // summary:
    //      adds group match to expression
    // nonCapture:
    //      If true, uses non-capturing match, otherwise matches are retained
    //      by regular expression.
    return "(" + (nonCapture ? "?:":"") + expression + ")"; // String
};
 
return regexp;
});