检查字符串是否以标点符号开头(Javascript)

时间:2015-09-18 16:37:34

标签: javascript jquery regex string

如何使用Javascript检查我的数据字符串是否以标点符号开头?我查看了Check if string is a punctuation characterHow to know that a string starts/ends with a specific string in jQuery?以及其他一些人,但我无法告诉我哪里出错了。

这是我到目前为止的一小部分:

      var punctuations = [".", ",", ":", "!", "?"];

      if (d.endContext.startsWith(punctuations)) {console.log(d.endContext)
      } else {console.log('false')};

我只会得到“假”。返回,但如果我传入"。"在

if(d.endContext.startsWith('.'))
... 

我得到了正确的结果。我也试过

     String punctuations = ".,:;?!"

就像Check if string is a punctuation character建议的那样,但Chrome和Firefox都给了我错误消息("未捕获语法错误:意外标识符"""语法错误:丢失;在语句"之前)。看起来这个错误通常是在Javascript中编写多行字符串,我不认为我会尝试这样做。 d.endContext将打印多行字符串,但是当我刚刚通过"。#34;时它工作正常,所以我不认为这是问题所在。

4 个答案:

答案 0 :(得分:8)

使用Regex要简单得多。

    var str = '.abc'
    var result = !!str.match(/^[.,:!?]/)

    console.log(result)
  • /表示正则表达式的开始/结束

  • ^表示'以'开头'

  • []表示'字符集'。它会匹配[]

  • 之间的任何字符

此外,这个应用程序非常适合学习正则表达式! http://regexr.com/

祝你有愉快的一天! :d

答案 1 :(得分:2)

使用somestartsWith方法。

 punctuations.some(function(character) {
     return string.startsWith(character)
});

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

  

some()方法测试数组中的某个元素是否通过了由提供的函数实现的测试。   或者您也可以使用正则表达式

/[.,:!?]/.test(string.charAt(0))

答案 2 :(得分:2)

这是一个很好的解决方案:

var punctuations = [".", ",", ":", "!", "?"];
var punkyString = ".hello!";
var nonPunkyString = "hello!";

function isPunkyString(str) {
  return punctuations.indexOf(str[0]) > -1;
}

console.log(punkyString, "is punky:", isPunkyString(punkyString));
console.log(nonPunkyString, "is punky:", isPunkyString(nonPunkyString));

单元测试!

var punkyStrings = punctuations.map(function (item) {
    return item + " <---<< Punctuations!"
});

var nonPunkyStrings = punctuations.map(function (item, i) {
    return i + " <---<< No punctuations!"
});

punkyStrings.forEach(function (item, i) {
    console.log("Expect", "isPunkyString(\"" + item + "\")", "to be true:", isPunkyString(item));
});

nonPunkyStrings.forEach(function (item, i) {
    console.log("Expect", "isPunkyString(\"" + item + "\")", "to be false:", isPunkyString(item));
});

为什么它很漂亮?因为我使用了punky这个词! :D哦,我把字符串视为一个数组。哪个好!

还有其他人单位测试过他们的代码吗? :d

答案 3 :(得分:2)

使用Array.prototype.indexOf可能是最简单的:

var punctuations = [".", ",", ":", "!", "?"];
var stringToSearch = d.endContext;  // Your string to search
if (punctuations.indexOf(stringToSearch.charAt(0)) !== -1) {
    // Your awesome code goes here
}

它与IE9以及几乎所有Chrome和Firefox(低至1.5)版本兼容,但如果您使用的是jQuery,则可以使用inArray进一步向后兼容。

或者......只是为了好玩,你可以走到另一端,走在前沿,用新的ES7打破所有非beta浏览器Array.prototype.includes

var punctuations = [".", ",", ":", "!", "?"];
var stringToSearch = d.endContext;  // Your string to search
if (punctuations.includes(stringToSearch.charAt(0))) {
    // Your awesome code goes here
}

兼容:

  • Chrome 47(尚未发布)
  • Firefox 43(尚未发布)