正则表达式-需要帮助获取字符串的特定部分

Regular Expression - Need help on getting specific part of a string

本文关键字:定部 字符串 获取 帮助 正则表达式      更新时间:2023-09-26

这是标准字符串结构:

{"actor":"100003221104984","target_fbid":"286108458103936","target_profile_id":"100003221104984","type_id":"17","source":"1","assoc_obj_id":"","source_app_id":"2305272732","extra_story_params":[],"content_timestamp":"1325711938","check_hash":"892251599922cc58"}

这个字符串中我唯一需要的部分是"target_profile_id"之后的数值,在这种情况下,应该是"100003221104984"

我真的不擅长正则表达式,如果有任何帮助,我将不胜感激!

提前感谢

数据显示为JSON格式(减去HTML转义)。因此,不需要正则表达式。

相反,直接访问:

var data = {"actor":"100003221104984","target_fbid":"286108458103936", ...}
alert(data.target_profile_id);

看看小提琴。

更新

正如Jonathan所指出的,如果字符串确实包含HTML实体,则需要首先对其进行解析,以创建一个对象,将其分配给上面的示例中的data

SO上还有其他帖子回答了如何做到这一点。例如:如何使用jQuery解码HTML实体?

如果您拥有所有这些&现状;你也可以通过获得正确的字符来完成,而不需要regex

var x = 
"{"actor":"100003221104984","target_fbid":"286108458103936","target_profile_id":"100003221104984","type_id":"17","source":"1","assoc_obj_id":"","source_app_id":"2305272732","extra_story_params":[],"content_timestamp":"1325711938","check_hash":"892251599922cc58"}";
var begin = x.indexOf("target_profile_id")+ "target_profile_id".length + "":"".length;
var endString = x.substring(begin, x.length);
var end = endString.indexOf(""") + begin;
alert(x.substring(begin, end));

尝试:

/"actor":"('[^&']+)/

/"actor":"([^&]+)/

我已经理解了你的问题。整个字符串实际上是一个JSON对象,其中引号(")以&.的形式出现

首先替换&引用然后计算表达式,得到你想要的任何项目的值。

以下工作代码:)

<script type="text/javaScript">
var str1="{&quot;actor&quot;:&quot;100003221104984&quot;,&quot;target_fbid&quot;:&quot;286108458103936&quot;,&quot;target_profile_id&quot;:&quot;100003221104984&quot;,&quot;type_id&quot;:&quot;17&quot;,&quot;source&quot;:&quot;1&quot;,&quot;assoc_obj_id&quot;:&quot;&quot;,&quot;source_app_id&quot;:&quot;2305272732&quot;,&quot;extra_story_params&quot;:[],&quot;content_ti&quot;:{&quot;actor&quot;:&quot;100003221104984&quot;,&quot;target_fbid&quot;:&quot;286108458103936&quot;,&quot;target_profile_id&quot;:&quot;100003221104984&quot;,&quot;type_id&quot;:&quot;17&quot;,&quot;source&quot;:&quot;1&quot;,&quot;assoc_obj_id&quot;:&quot;&quot;,&quot;source_app_id&quot;:&quot;2305272732&quot;,&quot;extra_story_params&quot;:[],&quot;content_timestamp&quot;:&quot;1325711938&quot;,&quot;check_hash&quot;:&quot;892251599922cc58&quot;}}";
var ans=str1.split("&quot;").join("'"");
var obj=eval("(" + ans+ ')');
alert(obj.target_profile_id);
</script>

看看你的实际数据是什么样子的:

{
    "actor": "100003221104984",
    "target_fbid": "286108458103936",
    "target_profile_id": "100003221104984",
    "type_id": "17",
    "source": "1",
    "assoc_obj_id": "",
    "source_app_id": "2305272732",
    "extra_story_params": [],
    "content_ti": {
        "actor": "100003221104984",
        "target_fbid": "286108458103936",
        "target_profile_id": "100003221104984",
        "type_id": "17",
        "source": "1",
        "assoc_obj_id": "",
        "source_app_id": "2305272732",
        "extra_story_params": [],
        "content_timestamp": "1325711938",
        "check_hash": "892251599922cc58"
    }
}