如何获得仅包含最多11或16个正则表达式字符的字符串?
Y_asof = Y.sort('Date').apply(lambda x: x.asof(X.index))
如果是数字,最大长度为16位, 如果是字母数字,最大长度为11个字符
例如:数字= 0825551234
例如:字母数字= 1800House
答案 0 :(得分:3)
您应该更新您的问题,而不是在评论中概述其余的要求。根据我的阅读,试试这个:/^[a-zA-Z0-9]{5,16}$/
字母数字,最少5个字符,最多16个字符重复。
答案 1 :(得分:2)
我是Regexp的新手,但对我而言,这是你问题的答案
if(preg_match("/^\d{1,16}$/", "12345678123456781") == 1)
{
echo "Numeric";
}
else if(preg_match("/^([\w\_]{1,11})$/", "qweqweqweqwe") == 1)
{
echo "Alphanumeric";
}
else
{
echo("some other stuff");
}
如果您不想转义下划线,只需将第二个正则表达式替换为此/^(\w{1,11})$/
答案 2 :(得分:1)
如果是数字,最大长度为16位,如果为字母数字,则为最大值 长度为11个字符
这应该这样做:
<?php
//$string="0123456789012345";/* 16 digits */
$string="012345abcde"; /* 11 alpha-numeric */
if( preg_match("/^[0-9]{1,16}$|^(?=.*[a-zA-Z])[a-zA-Z0-9]{1,11}$/", $string) )
{
echo 'valid Characters';
}
else
{
echo 'Invalid characters';
}
祝你好运!
答案 3 :(得分:1)
if(ctype_digit($this->smsSenderId) && strlen($this->smsSenderId) > 16){
//'too long (maximum is 16 numeric characters)';
}
// alpha numeric can contain 11 characters
else if(strlen($this->smsSenderId) > 11){
//'too long (maximum is 11 alpha-numeric characters)';
}
else if(!preg_match("/^[0-9a-zA-Z]{4,11}$/", $this->smsSenderId) == 1){
//'Invalid characters. Eg: 0825551234 or 1800House';
}
答案 4 :(得分:1)
你可以在不使用正则表达式的情况下完成。
$strings = array('0825551234', '1800House', '111111111111111', 'aaaaaaaaaaa', '12!1adfas');
foreach($strings as $string){
echo "Testing for: $string";
if((is_numeric($string) && strlen($string) <=16) || (ctype_alnum($string) && strlen($string) <=11)) {
echo ' true' . "\n";
} else {
echo ' false' . "\n";
}
}
输出:
Testing for: 0825551234 true
Testing for: 1800House true
Testing for: 111111111111111 true
Testing for: aaaaaaaaaaa true
Testing for: 12!1adfas false
或者如果你需要正则表达式:
$strings = array('0825551234', '1800House', '11122111111111111', 'aaaaaaaaaaa', '12!1adfas');
foreach($strings as $string){
echo "Testing for: $string";
if(preg_match('~^(\d{1,16}|[a-z0-9]{1,11})$~i', $string)) {
echo ' true' . "\n";
} else {
echo ' false' . "\n";
}
}
Regex101演示:https://regex101.com/r/mN1aF8/1