我有一个输入行,它接受包含两个实体的任意长度的字符串:一个小列表中的标识符类型,以及一个可以包含字母,数字和标点符号的标识符。这两个实体之间的标点符号可能是但不限于:| : / \ ,
我有一些代码可以在提供的字符串中找到标识符类型:
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"
是否有一个正则表达式会删除所有前导或尾随的标点和空白,但会保留中间的标点?
答案 0 :(得分:0)
(.+?)\s+[^a-zA-Z0-9]+.*$
您可以在以下位置查看其测试: https://regex101.com/r/stDlXi/1
如果您希望专门查找标点符号,则也可以这样做:(.+?)\s+[\|\\/\?!\.,;:-]+.*$
。我省略了方括号,guillemet,省略号,撇号,引号等。如果需要考虑它们,可以将其包括在方括号内。