Я ищу решение регулярных выражений, которое либо проверяет, является ли только строка состоит из символов подчеркивания ___
.строка содержит только символы подчеркивания
/[a-z]/
не работает, ни делает [^_]
Я ищу решение регулярных выражений, которое либо проверяет, является ли только строка состоит из символов подчеркивания ___
.строка содержит только символы подчеркивания
/[a-z]/
не работает, ни делает [^_]
Чтобы проверить, если строка имеет подчеркивания вы можете просто использовать - _+
Чтобы проверить, если строка имеет буквы или цифры используют [a-zA-Z0-9]+
Вы имеете полу ответил на вопрос. В любом случае, это было легко найти, и вы должны провести некоторое исследование, прежде чем размещать вопрос здесь.
Все о размещении символов в классе регулярных выражений определено с помощью [] и дается '+' этому классу, что означает один или несколько.
Вы также можете использовать или оператор, |
/^(_+|[a-zA-Z]+|[0-9]+)$/
Это также будет соответствовать AAA ###, потому что A находится в вашем регулярном выражении. Решение этого было бы проверить, есть ли какие-либо разные символы – Martijn
Чтобы * проверить * любой из них, зачем использовать '+'? – Ryan
@Martijn это не будет соответствовать строке, содержащей '#'. – Robert
Нечто подобное может сделать это. Проверка регулярных выражений, если у вас есть какие-либо другие символы, и отделка делает чек на подчеркивание только
if(!preg_match("/[^0-9a-z\_]/si", $string) && trim($string,"_")!=""){
// Code here
}
Вы изменили свой пост. Вы можете сделать любой из этих
if(trim($string,"_")=="")){ /* _ only */ }
if(str_replace("_", "", $string)=="")){/* _ only */}
if(!preg_match("/^_/si", $string)){/* _ only */}
Только символы подчеркивания? Попробуйте следующее:
/^_+$/
Это будет строка, состоящая из одного или нескольких символов подчеркивания. Он не будет соответствовать пустой строке.
Чтобы проверить, если строка состоит только из символов подчеркивания:
if (strspn($str, '_') == strlen($str)) {
// only underscores
}
Смотрите также: strspn()
Теоретически, пустая строка также состоит только из символов подчеркивания; если это нежелательно, вам нужно также проверить, отличен ли strlen($str)
.
Только * спецификация *? Нет доказательств того, что вы пробовали. – devnull
Ваш вопрос и примеры противоречат друг другу. –
Вы попробовали регулярное выражение, которое не сработало, или никуда не с ним? Отладка всегда помогает при ответе на вопрос. (Например, '[a-Z]' неверно. Обычно это будет написано '[A-z]', но это все еще неправильно.) – Ryan