Javascript 匹配并测试将 null 返回到 DOI 正则表达式

Javascript match and test returning null to DOI Regex expression

我一直在努力寻找一种方法来识别输入表单上的 DOI 以触发特定搜索。 我找到了一个 DOI 正则表达式 here and when I use it with Match or Test 我得到了 'NULL' 和错误结果

function checkDOI(string){
        //Redundant. I know 
        var testKey = String(string);
        var DOIpattern = '\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?!["&\'<>])\S)+)\b';

        var found = DOIpattern.test(testKey);
        console.log("found", found + " DOI "+ testKey);
        return found
      }
checkDOI("10.1016.12.31/nature.S0735-1097(98)2000/12/31/34:7-7")

我遇到了这个错误DOIpattern.test is not a function

然后如果我将 found.test 更改为 MATCH var found = DOIpattern.match(testKey);

结果为NULL

有人能告诉我我做错了什么吗?

提前致谢!

testRegExp class 而不是 String 的方法。要更正,请使用构造函数创建一个 RegExp 对象并对其调用 test 方法。

function checkDOI(string) {
  //Redundant. I know 
  var testKey = String(string);
  var DOIpattern = '\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?!["&\'<>])\S)+)\b';

  var found = new RegExp(DOIpattern).test(testKey);
  console.log("found", found + " DOI " + testKey);
  return found
}

checkDOI("10.1016.12.31/nature.S0735-1097(98)2000/12/31/34:7-7")

只要您的 RegExp 字符串正确,输入就应该匹配。

create a RegExp object using the constructor and call the test method on it.

谢谢!你的回应有效。以防万一其他人正在寻找正则表达式,我使用的正则表达式写得不正确,所以我把它剪成这个

\b(10[.][0-9]{4,}(?:[.][0-9]+)*\b/g

最终版本是这样的:

 checkDOI(string){
        var DOIpattern = new RegExp(/\b(10[.][0-9]{4,}(?:[.][0-9]+)*)\b/g);
        // var DOIpattern = ;
        var found = DOIpattern.test(testKey);
        console.log("found", found + " DOI "+ testKey);
        return found
      }