Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ionic中使用Regex验证URL_Regex_Forms_Ionic Framework - Fatal编程技术网

在Ionic中使用Regex验证URL

在Ionic中使用Regex验证URL,regex,forms,ionic-framework,Regex,Forms,Ionic Framework,我正在开发一个Ionic应用程序,并试图创建一个正则表达式来匹配某个表单验证的网站URL。下面是我正在使用的正则表达式: ^((http | ftp | https):\/\/)([\w-]+(?:(?:\.[\w-]+)))([\w,@?^=%&:\/~+\-]*[\w@?^=%&\/+-])?$ 虽然我知道这不是一个验证URL的“完美”正则表达式,但我发现在ionic和我的web测试中使用正则表达式是不一致的 例如,我将同一个正则表达式插入到中,有几个示例运行良好: 然而,当我运行我的

我正在开发一个Ionic应用程序,并试图创建一个正则表达式来匹配某个表单验证的网站URL。下面是我正在使用的正则表达式:

^((http | ftp | https):\/\/)([\w-]+(?:(?:\.[\w-]+)))([\w,@?^=%&:\/~+\-]*[\w@?^=%&\/+-])?$

虽然我知道这不是一个验证URL的“完美”正则表达式,但我发现在ionic和我的web测试中使用正则表达式是不一致的

例如,我将同一个正则表达式插入到中,有几个示例运行良好:

然而,当我运行我的ionic应用程序时,没有一个模式匹配

我知道我正确地使用了
Validators.pattern()
,因为我已经为电子邮件输入添加了一个regex验证器。我还知道我正确地使用了它,因为我能够插入简单的正则表达式模式,比如
http
,并且验证工作正常

在某种程度上,离子模式无法像普通正则表达式那样解析。也许我的模式使用的是爱奥尼亚无法识别或解析的字符

在Ionic中使用regex有什么我不知道的吗

下面是我如何设置各种表单控件的验证。请注意,organizerEmail的模式正在运行

let formGroup: FormGroup = this.formBuilder.group({
  title: ['', Validators.required],
  venue: ['', Validators.required],
  streetAddress: ['', Validators.required],
  city: ['', Validators.required],
  zipCode: ['', Validators.required],
  price: [''],
  description: ['', Validators.compose([Validators.maxLength(this.descriptionMax), Validators.required])],
  eventUrl: ['', Validators.compose([Validators.pattern('^((http|ftp|https):\/\/)?([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?$'), Validators.required])],
  contactName: ['', Validators.required],
  organizerEmail: ['', Validators.compose([Validators.pattern('^[a-zA-Z0-9._]+[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$'), Validators.required])],
  phoneNumber: [''],
});
以下是使用表单控件的HTML输入:

 <ion-item>
    <ion-label stacked color="light">Website</ion-label>
    <ion-input formControlName="eventUrl" type="url" placeholder="Website"></ion-input>
  </ion-item>

网站

您可以通过转义反斜杠来修复模式,也可以删除由引擎隐式添加的锚定。您还可以删除不必要的组

使用

这是你的电话号码

电子邮件检查正则表达式也必须正确退出

Validators.pattern('[a-zA-Z0-9._]+[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}')

请注意,organizerEmail的模式正在运行。-它不能正常工作。再次转义所有
\
。将
\/
替换为
/
。删除
^
$
。例如,
Validators.pattern('^((http | ftp | https):/)([\\w-]+(?:(?:\.[\\w-]+)+)([\\w,@?^=%&:/+-]*[\\w@?^=%&/++-])
只需几句注释:
https?
匹配
http
https
,更快、更短。令牌
\w
包含
\u
,因此您无需将其添加到字符类。@WiktorStribiżew完成了它!我缺少的是反斜杠。你是否将Regex101 regex类型设置为Javascript?@WiktorStribiżew如果你想提交答案,我会选择它。谢谢你!加一
Validators.pattern('[a-zA-Z0-9._]+[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}')