Я также столкнулся с этой проблемой 9009
, столкнувшись с ситуацией перезаписи.
В принципе, если файл уже существует и вы не указали переключатель /y
(который автоматически перезаписывается), эта ошибка может произойти при запуске из сборки.
Попробуйте это регулярное выражение:
^(?!\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
. $
- устанавливает конец строки Основываясь на ваших примерах, вы можете использовать это регулярное выражение,
^\d+(?:'(?: +\d+"(?: +\d+\/\d+)?)?|")$
Объяснение:
^
- Начало ввода \d+
- одна или несколько цифр (?:'
- группа без захвата, за которой следует одинарная кавычка (?:
- запуск группы без захвата (?: +\d+\/\d+)?
- соответствует одному или нескольким пробелам, за которыми следуют одна или несколько цифр, затем буквенный /
, затем снова одна или несколько цифр и целое из него является необязательным, поскольку он помещается в группу без захвата, за которой следует ?
)?
- закрытие предыдущей группы без захвата, и ?
означает, что даже эта группа является необязательной |")
- Чередование со вспомогательным регистром, в котором после числа может следовать только двойная кавычка и закрытие группы $
- Конец ввода Попробуйте Regex: ^(?:\d+')?(?: ?\d+"( ?\d+\/\d+)?)?$
Вы можете смоделировать на 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);
Используйте это regEx:
^ \ d + ['"] (?: + \ d +" (?: + \ d + / \ d +)?)? $
blockquote >Объяснение:
^ - 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