Regex для проверки формата строки - футы и дюймы

Я также столкнулся с этой проблемой 9009, столкнувшись с ситуацией перезаписи.

В принципе, если файл уже существует и вы не указали переключатель /y (который автоматически перезаписывается), эта ошибка может произойти при запуске из сборки.

0
задан hc_dev 27 February 2019 в 17:26
поделиться

5 ответов

Попробуйте это регулярное выражение:

^(?!\s*$)(?:(?!0+')\d+')?(?: *(?!0+")\d+")?(?: *(?!0+\/)\d+\/(?!0+$)\d+)?$

Нажмите для демонстрации

Объяснение:

[1129 ]
  • ^ - устанавливает начало строки
  • (?!\s*$) - отрицательный прогноз, чтобы убедиться, что за текущим соответствием не следует 0+ пробелов, за которыми следует конец строки. Это делается для того, чтобы убедиться, что регулярное выражение не должно совпадать с пустыми строками или строками, содержащими только пробелы
  • (?:(?!0+')\d+')? - соответствует 1+ цифрам, за которыми следует '. Также убедитесь, что он не совпадает с чем-то вроде 0'. ? в конце делает это дополнительное совпадение необязательным.
  • (?: *(?!0+")\d+")? - соответствует 0+ пробелам, за которыми следуют 1+ цифр и ". Также убедитесь, что он не соответствует что-то вроде 0". ? в конце делает это дополнительное совпадение необязательным.
  • (?: *(?!0+\/)\d+\/(?!0+$)\d+)? - соответствует 0+ пробелам, за которыми следуют дроби вида X/X, где X - это цифра. Кроме того, он не соответствует фракциям вида 0/6 или 0/0 или 8/0.
  • $ - устанавливает конец строки
    0
    ответ дан Potatoツ 27 February 2019 в 17:26
    поделиться

    Основываясь на ваших примерах, вы можете использовать это регулярное выражение,

    ^\d+(?:'(?: +\d+"(?: +\d+\/\d+)?)?|")$
    

    Объяснение:

    • ^ - Начало ввода
    • \d+ - одна или несколько цифр
    • (?:' - группа без захвата, за которой следует одинарная кавычка
    • (?: - запуск группы без захвата
    • [115 ] - соответствует одному или нескольким пробелам, за которыми следуют одна или несколько цифр, за которыми следует двойная кавычка
    • (?: +\d+\/\d+)? - соответствует одному или нескольким пробелам, за которыми следуют одна или несколько цифр, затем буквенный /, затем снова одна или несколько цифр и целое из него является необязательным, поскольку он помещается в группу без захвата, за которой следует ?
    • )? - закрытие предыдущей группы без захвата, и ? означает, что даже эта группа является необязательной
    • [1121 ] |") - Чередование со вспомогательным регистром, в котором после числа может следовать только двойная кавычка и закрытие группы
    • $ - Конец ввода

    Demo

    0
    ответ дан Pushpesh Kumar Rajwanshi 27 February 2019 в 17:26
    поделиться

    Попробуйте Regex: ^(?:\d+')?(?: ?\d+"( ?\d+\/\d+)?)?$

    Демо

    0
    ответ дан Matt.G 27 February 2019 в 17:26
    поделиться

    Javascript

    Вы можете смоделировать на JavaScript Demo: RegExp Constructor .

    var s = `5' 10" 1/2`;
    var s1 = `6' 3" 1/4`;
    var s2 = `4' 8"`;
    var s3 = `5'`;
    var s4 = `10"`;
    
    var regex = /\d[\s\'\"\d\/]+/;
    
    var result = s.match(regex);
    var result1 = s1.match(regex);
    var result2 = s2.match(regex);
    var result3 = s3.match(regex);
    var result4 = s4.match(regex);
    
    console.log(result);
    console.log(result1);
    console.log(result2);
    console.log(result3);
    console.log(result4);

    0
    ответ дан Joseph 27 February 2019 в 17:26
    поделиться

    Используйте это regEx:

    ^ \ d + ['"] (?: + \ d +" (?: + \ d + / \ d +)?)? $

    Объяснение:

    ^ - Start of input
    \d+ - one or more digits
    (?:' - Noncapture group followed by singlequote
    (?: - Start of non-capture group
    +\d+" - Matches one or more space followed by one or more digits followed by doublequote
    (?: +\d+\/\d+)? - Matches one or more space followed by one or more digits then literal / then again one or more digits and whole of it is optional as it is placed inside non-capture group followed by ?
    )? - Closing of previous non-capture group and ? means even that group is optional
    |") - Alternation to support case where number can only be followed by double quote and close of group
    $ - End of input
    
    0
    ответ дан SelakaN 27 February 2019 в 17:26
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: