JS-在比赛功能中不可重复

时间:2019-02-06 13:42:46

标签: javascript

错误很简单。在JS中,我尝试类似于PHP中的preg_match。我找到了匹配功能。我使用此函数将值与字符串元素进行比较。如果发现返回true,否则返回false。

我尝试过

  var sim_action = $(this);            
  if(sim_action.data("phone").toString().match("/^(+34|0034|34)+([67]){8})$/")){

但是返回此错误。

  

无效的正则表达式:// ^(+ 34 | 0034 | 34)+([67]){8})$ //:无   重复

问题是。如何在JS match函数中添加此字符串?

2 个答案:

答案 0 :(得分:0)

您需要使用反斜杠转义 <div v-for="(task, index) in tasks" :key="index" :class="{'is-complete': task.complete}" > 字符:+。您也有一个没有匹配的开放支架的封闭支架。

答案 1 :(得分:0)

+()是元字符,如果要引用文字,则需要使用\对其进行转义。这是regex101 demo,突出显示了正则表达式的错误

关于正则表达式,来自维基百科,我认为西班牙电话号码的格式为+34(6|7)xxxxxxxx

您可以使用以下正则表达式:/^(\+34|0034|34)[67]\d{8}$/

如果您只想检查正则表达式是否通过,则可以使用regex.test(<stringToBeTested>)

const regex = /^(\+34|0034|34)[67]\d{8}$/
const phone = "+34712345673";

if (regex.test(phone))
  console.log("Valid phone number")
  
const phoneNumbers = ["+34712345673", "0034612345673", "+34812345673"]
phoneNumbers.forEach(p => console.log(regex.test(p)))