регулярное выражение для имени и фамилии

Конечно, как только я опубликую это, я это выясню.

Я думаю, что моя проблема заключалась в попытке использовать «последнюю версию» в качестве версии, поэтому я изменил ее на 2012-10-17.

В случае, если это поможет кому-то другому, желающему сделать что-то подобное, вот полный рабочий код для создания нового пользователя IAM, создания ключей доступа для нового пользователя, создания нового сегмента S3, установки CORS на сегменте S3, чтобы разрешить доступ из домен и промежуточный домен, создайте новую политику, чтобы ограничить доступ только к новой корзине S3, а затем присоедините эту новую политику к новому пользователю IAM:

// VARIABLES
$key = 'YOURKEY';
$secretKey = 'YOURSECRETKEY';
$iamUserKey = '';
$iamUserSecretKey = '';
$domain = 'somedomain.com';
$stagingDomain = 'somestagingdomain.com';
$userName = 'someusername';
$BUCKET_NAME = 'somebucketname';
$s3Arn = 'arn:aws:s3:::' . $BUCKET_NAME;
$policyName = 'somepolicynamePolicy';
$policyArn = '';

require 'aws/aws-autoloader.php';
use Aws\S3\S3Client;
use Aws\Iam\IamClient;
use Aws\Exception\AwsException;

// CREATE IAM CLIENT
$iamClient = new IamClient([
    'version' => 'latest',
    'region' => 'us-west-2',
    'credentials' => [ // CHANGE THIS TO A DIFFERENT METHOD BEFORE MOVING TO PRODUCTION
        'key'    => $key,
        'secret' => $secretKey,
    ],
]);

// CREATE IAM USER
try {
    $result = $iamClient->createUser(array(
        'UserName' => $userName,
    ));
    //var_dump($result);
} catch (AwsException $e) {
    echo $e->getMessage();
    error_log($e->getMessage());
}

// CREATE IAM USER ACCESS KEYS
try {
    $result = $iamClient->createAccessKey([
        'UserName' => $userName,
    ]);
    $iamUserKey = $result['AccessKey']['AccessKeyId'];
    $iamUserSecretKey= $result['AccessKey']['SecretAccessKey'];
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}

// CREATE S3 CLIENT
$s3Client = new S3Client([
    'version' => 'latest',
    'region' => 'us-west-2',
    'credentials' => [ // CHANGE THIS TO A DIFFERENT METHOD BEFORE MOVING TO PRODUCTION
        'key'    => $key,
        'secret' => $secretKey,
    ],
]);

// CREATE S3 BUCKET
try {
    $result = $s3Client->createBucket([
        'Bucket' => $BUCKET_NAME,
    ]);
} catch (AwsException $e) {
    echo $e->getMessage();
    echo "\n";
}

// SET CORS RULES
$cors = array(array(
    'AllowedOrigins' => array($domain, $stagingDomain),
    'AllowedMethods' => array('POST', 'GET', 'PUT'),
    'MaxAgeSeconds' => 3000,
    'AllowedHeaders' => array('*')
));

// ADD CORS RULES
$result = $s3Client->putBucketCors(array(
    'Bucket' => $BUCKET_NAME,
    'CORSConfiguration' => array('CORSRules' => $cors)
));

// CREATE IAM POLICY - BREAKS ON THIS, MALFORMED POLICY???
$myManagedPolicy = '{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "' . $s3Arn . '"
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "'. $s3Arn . '/*"
        }
    ]
}';

try {
    $result = $iamClient->createPolicy(array(
        // PolicyName is required
        'PolicyName' => $policyName,
        // PolicyDocument is required
        'PolicyDocument' => $myManagedPolicy
    ));
    //var_dump($result);
    $policyArn = $result['Policy']['Arn'];
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
    echo $e->getMessage();
}

// ATTACH IAM POLICY TO USER
try {
    $attachedUserPolicies = $iamClient->getIterator('ListAttachedUserPolicies', ([
        'UserName' => $userName,
    ]));
    if (count($attachedUserPolicies) > 0) {
        foreach ($attachedUserPolicies as $attachedUserPolicy) {
            if ($attachedUserPolicy['PolicyName'] == $policyName) {
                echo $policyName . " is already attached to this role. \n";
                exit();
            }
        }
    }
    $result = $iamClient->attachUserPolicy(array(
        // UserName is required
        'UserName' => $userName,
        // PolicyArn is required
        'PolicyArn' => $policyArn,
    ));
    //var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
    echo $e->getMessage();
}

Не используйте этот код как есть, вы не следует добавлять ключи доступа непосредственно в код, как я делал в этом тестовом примере. Вам следует рассмотреть различные способы аутентификации в SDK и использовать метод, который лучше всего подходит для вашей ситуации.

107
задан John R Perry 18 July 2019 в 10:57
поделиться

6 ответов

Fullname только с одним пробелом:

^[a-zA-Z'\-\pL]+(?:(?! {2})[a-zA-Z'\-\pL ])*[a-zA-Z'\-\pL]+$
0
ответ дан 24 November 2019 в 03:35
поделиться

Не забывайте о таких именах, как:

  • Матиас д'Аррас
  • Мартин Лютер Кинг-мл.
  • Hector Sausage-Hausen

Это должно сработать для большинства вещей:

/^[a-z ,.'-]+$/i

ИЛИ Поддержите международные имена с суперсладким юникодом:

/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúüüųūÿýżźñççčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,. '-]+$/u

169
ответ дан 24 November 2019 в 03:35
поделиться

Вы делаете ложные предположения относительно формат имени и фамилии. Вероятно, лучше вообще не проверять имя, кроме проверки того, что оно пустое.

72
ответ дан 24 November 2019 в 03:35
поделиться
var name = document.getElementById('login_name').value; 
if ( name.length < 4  && name.length > 30 )
{
    alert ( 'Name length is mismatch ' ) ;
} 


var pattern = new RegExp("^[a-z\.0-9 ]+$");
var return_value = var pattern.exec(name);
if ( return_value == null )
{
    alert ( "Please give valid Name");
    return false; 
} 
-2
ответ дан 24 November 2019 в 03:35
поделиться

Если вы хотите, чтобы полное имя состояло из 3–30 символов без ограничений для отдельных слов попробуйте следующее:

[a-zA-Z ]{3,30}

Помните, что он исключает все иностранные буквы как é, è, à, ï.

Если вы хотите, чтобы ограничение от 3 до 30 символов применялось к каждому отдельному слову, Jens regexp выполнит эту работу.

-2
ответ дан 24 November 2019 в 03:35
поделиться

Имя будет

"([a-zA-Z]{3,30}\s*)+"

Если вам нужен весь первый часть имени должна быть короче 30 букв, я думаю, вам нужно проверить это отдельно. Выражение ". {3,30}" должно делать это.

Требования к вашей фамилии переводятся в

"[a-zA-Z]{3,30}"

, но вы должны это проверить. Есть много фамилий, содержащих пробелы.

10
ответ дан 24 November 2019 в 03:35
поделиться
Другие вопросы по тегам:

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