正则表达式验证规则以避免特殊字符不适用于 laravel 中的文本字段
Regex validation rule to avoid special characters not applying for the text field in laravel
在我的 laravel 应用程序中,我有一个用于注册新域的表格。在该表单中,我试图验证文本字段 (subDomainName) 以避免使用特殊字符。但是除了该输入字段的正则表达式之外,所有其他规则都可以正常工作。
我的表单代码如下,
<form id="w1" action="{{ route('app.save') }}" method="post">
@csrf
<input type="text" id="app-subdomainname" class="form-control @error('subDomainName') is-invalid @enderror" name="subDomainName" placeholder="{{ __('sentence.Sub Domain Name') }}" value="{{ old('subDomainName') }}" aria-required="true">
@error('subDomainName')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<select id="app-subdomainsuffix" class="form-control @error('subDomainSuffix') is-invalid @enderror" name="subDomainSuffix" aria-required="true">
<option value="">- {{ __('sentence.Select domains') }} -</option>
<option value="TEST.SITE">TEST.SITE</option>
</select>
@error('subDomainSuffix')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<select id="app-packagetype" class="form-control @error('packageType') is-invalid @enderror" name="packageType" aria-required="true">
<option value="">- {{ __('sentence.Select package type') }} -</option>
@foreach($packages as $package)
<option value="{{$package->id}}">{{$package->name}}</option>
@endforeach
</select>
@error('packageType')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<select id="app-payment" class="form-control @error('paymentoption') is-invalid @enderror" name="paymentoption" aria-required="true">
<option value="">- {{ __('sentence.Select Payment Option') }} -</option>
</select>
@error('paymentoption')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<select id="app-themeid" class="form-control @error('themeid') is-invalid @enderror" name="themeid" aria-required="true">
<option value="">- {{ __('sentence.Select theme') }} -</option>
<option value="default">default</option>
</select>
@error('themeid')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<select id="app-lang" class="form-control @error('lang') is-invalid @enderror" name="lang" aria-required="true">
<option value="">- {{ __('sentence.Select Language') }} -</option>
<option value="en">English</option>
<option value="fr">French</option>
</select>
@error('lang')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<div class="form-group">
<input type="hidden" id="domain" class="form-control" name="domain" >
<button type="submit" class="btn btn-default subscribe px-5">{{ __('sentence.Save') }}</button>
</div>
</form>
我的控制器验证如下,
$this->validate($request, [
'subDomainName' => 'required','regex:/(^[A-Za-z0-9 ]+$)+/',
'subDomainSuffix' => 'required',
'lang' => 'required',
'themeid' => 'required',
'paymentoption' => 'required',
'packageType' =>'required',
'domain' => 'unique:apps',
]);
除正则表达式外,所有验证工作正常....
如果你想在一个字段上使用多个验证规则,你应该将它放在一个用竖线分隔的字符串中 |
或者将它放在一个数组中。试试这个:
$this->validate($request, [
'subDomainName' => [
'required',
'regex:/^[A-Za-z0-9 ]+$/'
],
'subDomainSuffix' => 'required',
'lang' => 'required',
'themeid' => 'required',
'paymentoption' => 'required',
'packageType' =>'required',
'domain' => 'unique:apps',
]);
我还稍微缩短了您的正则表达式字符串。
在我的 laravel 应用程序中,我有一个用于注册新域的表格。在该表单中,我试图验证文本字段 (subDomainName) 以避免使用特殊字符。但是除了该输入字段的正则表达式之外,所有其他规则都可以正常工作。
我的表单代码如下,
<form id="w1" action="{{ route('app.save') }}" method="post">
@csrf
<input type="text" id="app-subdomainname" class="form-control @error('subDomainName') is-invalid @enderror" name="subDomainName" placeholder="{{ __('sentence.Sub Domain Name') }}" value="{{ old('subDomainName') }}" aria-required="true">
@error('subDomainName')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<select id="app-subdomainsuffix" class="form-control @error('subDomainSuffix') is-invalid @enderror" name="subDomainSuffix" aria-required="true">
<option value="">- {{ __('sentence.Select domains') }} -</option>
<option value="TEST.SITE">TEST.SITE</option>
</select>
@error('subDomainSuffix')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<select id="app-packagetype" class="form-control @error('packageType') is-invalid @enderror" name="packageType" aria-required="true">
<option value="">- {{ __('sentence.Select package type') }} -</option>
@foreach($packages as $package)
<option value="{{$package->id}}">{{$package->name}}</option>
@endforeach
</select>
@error('packageType')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<select id="app-payment" class="form-control @error('paymentoption') is-invalid @enderror" name="paymentoption" aria-required="true">
<option value="">- {{ __('sentence.Select Payment Option') }} -</option>
</select>
@error('paymentoption')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<select id="app-themeid" class="form-control @error('themeid') is-invalid @enderror" name="themeid" aria-required="true">
<option value="">- {{ __('sentence.Select theme') }} -</option>
<option value="default">default</option>
</select>
@error('themeid')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<select id="app-lang" class="form-control @error('lang') is-invalid @enderror" name="lang" aria-required="true">
<option value="">- {{ __('sentence.Select Language') }} -</option>
<option value="en">English</option>
<option value="fr">French</option>
</select>
@error('lang')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<br>
<div class="form-group">
<input type="hidden" id="domain" class="form-control" name="domain" >
<button type="submit" class="btn btn-default subscribe px-5">{{ __('sentence.Save') }}</button>
</div>
</form>
我的控制器验证如下,
$this->validate($request, [
'subDomainName' => 'required','regex:/(^[A-Za-z0-9 ]+$)+/',
'subDomainSuffix' => 'required',
'lang' => 'required',
'themeid' => 'required',
'paymentoption' => 'required',
'packageType' =>'required',
'domain' => 'unique:apps',
]);
除正则表达式外,所有验证工作正常....
如果你想在一个字段上使用多个验证规则,你应该将它放在一个用竖线分隔的字符串中 |
或者将它放在一个数组中。试试这个:
$this->validate($request, [
'subDomainName' => [
'required',
'regex:/^[A-Za-z0-9 ]+$/'
],
'subDomainSuffix' => 'required',
'lang' => 'required',
'themeid' => 'required',
'paymentoption' => 'required',
'packageType' =>'required',
'domain' => 'unique:apps',
]);
我还稍微缩短了您的正则表达式字符串。