什么正则表达式从Javascript字符串的开头和结尾开始修剪任意标点符号?

时间:2018-07-05 18:32:18

标签: javascript regex

我有一个输入行,它接受包含两个实体的任意长度的字符串:一个小列表中的标识符类型,以及一个可以包含字母,数字和标点符号的标识符。这两个实体之间的标点符号可能是但不限于:| : / \ ,

我有一些代码可以在提供的字符串中找到标识符类型:

for(var i = 0; i < idTypes.length; i++){
 var search = rawInput.toUpperCase().search(idTypes[i]);
 if (search >= 0){
  var inputType = idTypes[i];
  var regEx = new RegExp(inputType, "i")
  var inputContents = rawInput.replace(regEx,"");
  console.log("This is type " + inputType + " with contents " + inputContents);
  return [inputType,inputContents];
 }
}

但是,这不能捕获用作分隔符的标点符号:

如果

rawinput = "T14 11/15/11 | WPK |"

然后

inputContents == "T14 11/15/11 | |"

我想

inputContents == "T14 11/15/11"

是否有一个正则表达式会删除所有前导或尾随的标点和空白,但会保留中间的标点?

1 个答案:

答案 0 :(得分:0)

(.+?)\s+[^a-zA-Z0-9]+.*$

您可以在以下位置查看其测试: https://regex101.com/r/stDlXi/1

如果您希望专门查找标点符号,则也可以这样做:(.+?)\s+[\|\\/\?!\.,;:-]+.*$。我省略了方括号,guillemet,省略号,撇号,引号等。如果需要考虑它们,可以将其包括在方括号内。