用于匹配字符串中特定模式的字符串原型语法

时间:2018-08-01 00:56:26

标签: javascript string

假设我要获取11-22dd-dd)第一个字符的字符串位置。
我还不清楚原型的语法,但我相信我已经接近了。

由于某种原因,如果我有11 - 22,该代码现在可以正常工作,但是如果没有这些空格,它将无法正常工作。
此外,我想排除在-的任一侧具有两个以上数字的所有匹配项。
不想只匹配1111-2222的{​​{1}}。

11-22
function myFunction() {
var str = 'For more information, 11-22 1111-2222';
var re = /\d+\d+\ +[-]+ \d+\d/i;
document.getElementById("result").innerHTML=(str.search(re));
}

3 个答案:

答案 0 :(得分:1)

由于看起来空格是可选的,因此应使用*(零个或多个出现)对其进行量化。如果您只需要两位数,则使用\d\d而不是用+来量化两位数,当它们彼此相邻时这没有多大意义:

function myFunction(str) {
  console.log(str.search(/\b\d\d *- *\d\d/));
}
myFunction('For more information, 11-22 1111-2222');
myFunction('For more information, 11 - 22 1111-2222');
myFunction('foobar, 11 - 22 1111-2222');
myFunction('1111-2222 11 - 22');

答案 1 :(得分:1)

尝试https://regexr.com,它具有一个互动式的游戏笔,您可以在其中迭代获取所需正则表达式的方式。

(\ D1 {2} -2 {2} \ D)

我想出的是接近但不是您想要的东西。

答案 2 :(得分:0)

如果您只想检查特定字符串的位置,则也可以使用str.indexOf(your pattern)进行。

检查以下代码:

function myFunction() {
var str = 'For more information, 11-22 1111-2222';
var re = "11-22";
document.getElementById("result").innerHTML=(str.indexOf(re));
}
<body onload="myFunction()">

<p>result: <span id="result"></span></p>