Регулярное выражение для принудительного заполнения строкового поля - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно найти способ, чтобы помочь пользователю заполнить строковое поле. Мне нужно обязать пользователя заполнить поле следующим образом:

IP ADRESS (SPACE) PORT (end)

IP ADRESS (SPACE) PORT (end)

Например:

123.45.70.2 8080

143.23.10.10 433

Мне нужен список с IP-адресом и соответствующим портом.

Я прочитал что-то около RegEx, но не могу найти способ сделать это.

Поле, которое я хочу контролировать, - это многострочная текстовая переменная элемента каталога услуг.

Кто-нибудь может мне помочь?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 03 октября 2019

Вы можете использовать приведенный ниже код для извлечения всех IP-адресов в заданной строке, используя javascript:

function findAll(regexPattern, sourceString) {
    let output = []
    let match
    // make sure the pattern has the global flag
    let regexPatternWithGlobal = RegExp(regexPattern,"g")
    while (match = regexPatternWithGlobal.exec(sourceString)) {
        // get rid of the string copy
        delete match.input
        // store the match data
        output.push(match[0].replace(":", " "))
    } 
    return output
}


var str = "123.23.255.123:1233 128.9.88.77:1233"; 
var ipAddress = findAll("(([0-1]?[0-9]?[0-9]|[2]?[0-5][0-5])\.){3}([0-1]?[0-9][0-9]|[2]?[0-5][0-5])\:[0-9]{4}", str);

RegExp(str, "g")
console.log(ipAddress)

вывод приведенного выше кода будет

[ '123.23.255.123 1233', '128.9.88.77 1233' ]
1 голос
/ 03 октября 2019

Regex можно использовать там, но вы должны быть очень осторожны с крайними случаями.

Этот пример решает вашу проблему многострочной строки, которая должна содержать только адреса IPv4, за которыми следует порт после пробела.

Например.

123.45.70.2 8080
143.23.10.10 433

И образец кода JS

var textInput= `
123.45.70.2 8080
143.23.10.10 433
`.trim();

var isValid = /^(?:[0-9]{1,3}\.){3}[0-9]{1,3} [1-9][0-9]*$/mg.test(textInput);
console.log(isValid);
...