首页 > 解决方案 > 什么正则表达式从Javascript中字符串的开头和结尾修剪任意标点符号?

问题描述

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

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

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"

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

标签: javascriptregex

解决方案


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

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

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


推荐阅读