Я, может казаться, не выясняю regex шаблон для соответствующих строк, только если он не содержит пробел. Например,
"this has whitespace".match(/some_pattern/)
должен возвратиться nil
но
"nowhitespace".match(/some_pattern/)
должен возвратить MatchData со всей строкой. Кто-либо может предложить решение для вышеупомянутого?
В Руби я думаю, что это было бы
/^\S*$/
Это означает "начать, сопоставить любое количество не белых символов, конец"
.>> "this has whitespace".match(/^\S*$/)
=> nil
>> "nospaces".match(/^\S*$/)
=> #<MatchData "nospaces">
^
= начало строки
\S = не-белый символ, *
= 0 или более
$
= конец строки
Не уверен, что вы можете сделать это в одном шаблоне, но вы можете сделать что-то вроде:
"string".match(/pattern/) unless "string".match(/\s/)
Вы хотите:
/^\S*$/
Это говорит "соответствовать началу строки, затем нулю или больше небелого пробела, затем концу строки". Условие для предопределенных классов символов заключается в том, что строчная буква относится к классу, а прописная - к его отрицанию. Таким образом, \s
относится к пробельным символам, в то время как \S
относится к небелым.
Вы всегда можете выполнить поиск для пробелов, а затем отрицать результат:
"str".match(/\s/).nil?