簡體   English   中英

正則表達式查找4個字符的模式

[英]Regex Find Pattern of 4 Characters

我很困惑如何做到這一點。 我有一個匹配此模式的字符串數組:

AABC,
ABBC,
ABCC,
AAAB,
ABBB

我希望使用正則表達式來確定特定字符串是否與這些模式之一匹配。 字符串本身實際上並不由A,B或C組成。這只是為了展示模式的樣子。 例如:模式AAAB不應等於BAAA。

你能幫我嗎?

編輯-例如:

['TTES', 'TEES', 'TESS', 'TTTE', 'TEEE']

array [0]應該匹配AABC,

array [1]應該匹配ABBC,

array [2]應該匹配ABCC,

array [3]應該匹配AAAB,

array [4]應該匹配ABBB,

您可以通過以下方式從您的模式生成RegExp

var stringToPattern = function (string) {
    var regexString = string.split('').map(function (char, position, string) {

        var prevIndex = string.indexOf(char);

        return prevIndex < position ? '(\\' + (prevIndex + 1) + ')' : '(.)';

    }).join('');

    return new RegExp(regexString);
};

該函數根據輸入字符串生成一個正則表達式:

  • AABC/(.)(\\1)(.)(.)/
  • ABBC/(.)(.)(\\2)(.)/
  • 等等...

例子:

stringToPattern('AABC').test('TTES'); // true
stringToPattern('AABC').test('TEES'); // false

stringToPattern('ABBC').test('TEES'); // true
stringToPattern('ABBC').test('TTES'); // false

更新

var getMatchingPatterns = function (string) {
    var patterns = [
        'AABC',
        'ABBC',
        'ABCC',
        'AAAB',
        'ABBB'
    ];
    return patterns.filter(function (pattern) {
        return stringToPattern(pattern).test(string);
    });
};

例子:

getMatchingPatterns('ttob'); // ['AABC']
getMatchingPatterns('ottb'); // ['ABBC']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM