为什么我的正则表达式不能与Validators.pattern一起使用?

时间:2019-06-17 19:28:26

标签: javascript regex angular

我有一个表单,只想允许字母,空格和撇号。我有一个带有Angular的验证器:

  function geocodeLatLng(location, method) {
            var res;
            var geocoder = new google.maps.Geocoder;
            geocoder.geocode(method, function(results, status) {
              if (status === 'OK') {
                if (results[0]) {

                  if(method.address){
                    res = results[0].geometry.location
                    var marker = new google.maps.Marker({
                     position: res,
                     draggable:true,
                     map: map
                   });

                  }

                  else {
                    res = results[0].formatted_address
                  }

                 show_road(results[0].geometry.location);

                } else {
                  window.alert('good');
                }
              } else {
                window.alert('wrong: ' + status);
              }
            });

           return res;
          }

     alert (geocodeLatLng(center, {'location': center}));

第一个问题是,如果我要这么做

Validators.compose([
  AppValidators.required,
  Validators.minLength(2),
  Validators.pattern('[a-zA-Z ]*'),
]))

验证完全无效。

否则我尝试过类似的事情

Validators.pattern(/[a-zA-Z ]*/)

但是验证似乎无效。根据{{​​3}}的说法,Validators.pattern('[a-zA-Z\' ]*') Validators.pattern(/[a-zA-Z' ]*/) Validators.pattern('[a-zA-Z\s']*') Validators.pattern(/[a-zA-Z\s']*/) 似乎是我想要的,但是验证仍然无效。

编辑:

我已经尝试了用户Thefourthbird和Brandon的答案(虽然很欣赏),但从它仍然认为无效的意义上说,它是行不通的。

我已在此处注销[a-zA-Z' ]FormControl

console.log(this.member.control.firstName)

2 个答案:

答案 0 :(得分:1)

我建议将RegExp对象与模式验证器一起使用。有时在使用字符串时,我会看到验证器的行为异常。

对于模式本身,^[a-zA-Z ']+$就足够了,所以:

...Validators.pattern(new RegExp(/^[a-zA-Z ']+$/))

应该可以帮助您。 RegEx验证程序:https://regex101.com/r/W35zae/1

答案 1 :(得分:0)

我认为最直接的解决方案是改用模式验证器:

<input name="firstName" ngModel pattern="[a-zA-Z' ]{2,}">

请参阅:https://angular.io/api/forms/PatternValidator

以下是一些实现示例:https://www.concretepage.com/angular-2/angular-2-4-pattern-validation-example(formControl,ngModel等)