如果存在,从字段中剥离GUID

时间:2014-10-09 20:33:16

标签: javascript jquery regex

我的客户端webservice使用GUID返回一些字段而一些不返回。 我想编写一个函数来检查该字段中是否有GUID我需要从中删除该GUID,如果GUID不存在则返回字段。

功能原型: -

function stripGuid(field)
{
 //check if field has GUID then strip off, return new strip field
 //else return field as it is
 }

示例数据: -

 4922093F-148F-4220-B321-0FBB1843B5DDrec_guid   
 4922093F-148F-4220-B321-0FBB1843B5DDdate_add
 tablenam
 sessguid

我如何称呼功能: -

stripGuid(sampleData);

预期产出: -

 rec_guid
 date_add
 tablenam
 sessguid

2 个答案:

答案 0 :(得分:1)

与大多数正则表达式一样,答案的复杂性取决于您需要涵盖的案例数量,例如:

return field.replace(/[0-9a-fA-F\-]{36}/g, "");

将覆盖大多数情况并且阅读起来并不太糟糕,但在一些非常重要的情况下失败,所以可能是

return field.replace(/[0-9a-fA-F]{8}\-?[0-9a-fA-F]{4}\-?[0-9a-fA-F]{4}\-?[0-9a-fA-F]{4}\-?[0-9a-fA-F]{12}/g, "");

会更好地为你工作(因为它确保破折号都在正确的位置,并且它们的数量正确)。更好的选择取决于您期望输入的标准化程度以及项目在可读性和正确性之间划分界线的位置。没有更多细节,很难说什么对你最好。

编辑:Nate Kerkhofs是对的,我已经在上面的正则表格中留下了全球旗帜,现在已经修好了。

答案 1 :(得分:1)

return field.replace(/[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}/gi, "");

与teryret的解决方案不同,它会删除所有guid,并且忽略大小写以便于阅读。